我正在使用Spring MVC开发一个项目,其中java作为后端,HTML(JSP)/ CSS / JS作为前端。 在我的java控制器中,我将数据添加到模型中,如此
--onto
我可以像这样轻松访问JSP文件中的
model.addAttribute("someData", theData);
对我来说问题是这只适用于我的JSP文件。我正在导入其他css和js文件,如
${theData} or "${theData}"
他们似乎无法访问该模型。我知道客户端在运行时没有模型,但javascript文件由服务器以与HTML / JSP文件相同的方式提供,所以为什么这不起作用?或者我必须使用哪种设置?
我意识到我的JSP文件中的内联js代码有效,但这不是很灵活,只是不是真正的"我的解决方案。另外,我想避免额外调用服务器(如AJAX)来获取我的数据。
感谢您的帮助!
答案 0 :(得分:2)
...但是javascript文件由服务器以与HTML / JSP文件相同的方式提供...
不,这不是真的。静态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数据非常容易。
答案 1 :(得分:1)
willOEM为您提供了良好的背景知识。因此,静态文件不知道模型值,但也不需要这样,因为您始终可以编写出自己的代码。
如果你在jsp中调用main.js
中的任何函数,那么你应该使用${theData}
作为函数参数。如果没有,你总是可以在dom元素上使用数据属性,在那里存储你的模型变量,并在你的js文件中访问它,所以像
<div data-the-data="${theData}">Lorem ipsum</div>
答案 2 :(得分:0)
我已经解决了#34;现在通过在html文档中定义数据绑定内联
var theData = "{theData}";
然后在我的标准javascript文件中使用它。 不是很完美,但似乎是最好的解决方案。