我正在开发一个使用 Spring MVC 的项目,以 java 作为后端,以 HTML(JSP)/CSS/JS 作为前端。 在我的 java Controller 中,我将数据添加到模型中,如下所示
model.addAttribute("someData", theData);
我可以像这样在 JSP 文件中轻松访问它
${theData} or "${theData}"
对我来说问题是这只适用于我的 JSP 文件。我在那里导入其他 css 和 js 文件,例如
<script src="<c:url value='/resources/javascript/main.js'/>"></script>
他们似乎无法访问该模型。我知道客户端在运行时没有模型,但是 javascript 文件由服务器以与 HTML/JSP 文件相同的方式提供,那么为什么这不起作用呢?或者我必须使用任何类型的设置?
我意识到 JSP 文件中的内联 js 代码可以工作,但这不是很灵活,对我来说不是一个“真正的”解决方案。另外,我希望避免额外调用服务器(如 AJAX)来获取我的数据。
感谢您的帮助!
最佳答案
...but the javascript files are served by the server the same way as the HTML/JSP file...
不,这不是真的。静态 JavaScript、CSS 和 HTML 文件由 Web 服务器按原样提供,无需任何处理。您示例中的 EL 片段...
<script src="<c:url value='/resources/javascript/main.js'/>"></script>
...仅根据您作为函数参数提供的相对 URL 生成具体 URL。没有嵌入关于 main.js
是什么或做什么的知识。您的 JSP 文件由 Java servlet 容器显式处理。这就是为什么它拥有有关您的应用程序、bean、模型等的知识。这是一个严重的过度简化,但希望它能传达要点。
编辑
您可以在 JSP 中使用静态文件中的 JSON,但必须在应用程序的 bean 中读取、处理和存储它们作为 Java 对象。不过,我不确定您为什么要这样做,因为通过 JavaScript 读取 JSON 数据非常容易。
关于java - 访问导入的js文件中的Spring MVC模型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30715199/