如果我的javascript / jquery代码是在jsp文件中编写的,我可以使用"${varName}"
来引用Spring的modelAttribute值。
但是,我想将 javascript 代码移入其自己的文件中,以使jsp文件更具可读性。当我这样做时,它不会再能够找到该modelAttribute。我该如何解决这个问题?
如何从.js -file指向模型属性?
提前致谢!
答案 0 :(得分:2)
好吧,我已经在我的试验中试图找到并回答这个问题。
实际上,似乎没有直接解决方案,这就是原因:
当您将Javascript代码移动到单独的文件时,这意味着浏览器将启动单独的请求来获取该文件。因此,您存储在请求范围(a.k.a。 $ {varName} )中的数据不是获取 .js 文件的请求的一部分;它只是获取 .jsp 文件的请求的一部分。因此,您的Javascript文件中将无法使用 $ {varName} 值。
除此之外的另一个原因: .js 文件不会被Web引擎处理为服务器端代码(在这种情况下很可能是Tomcat),所以 $ {varName} 文本被完全忽略。为了好玩,我试图破解:我将我的脚本文件从 .js 重命名为 .jsp ,并在我的 .jsp 中使用它页:
<script type="text/javascript" src="js/actually_javascript.jsp"></script>
它欺骗了Web服务器以处理文件服务器端,但由于上述原因#1,这仍然无法正常工作。如果您将值存储在会话中,它可能会起作用,但在一天结束时,这将是一种丑陋的黑客攻击,您将失去IDE的代码突出显示和完成功能,这将是被愚弄,以为你正在编辑一个实际的 .jsp 文件。不推荐。
总而言之,我认为在JavaScript中访问 {$ varName} 的唯一方法是:
答案 1 :(得分:0)
您应该通过jsp文件初始化您的javascript文件。
示例:强> 在jsp页面中加载.js文件后,创建一个单独的脚本部分,用于初始化变量:
<script src="js-path/file.js"></script>
<script>
init(${varFromModel1}, ...);
</script>
在javascript文件中定义init-method:
function init(param1, ...) {
// initialize variables of .js file here
}
请记住,为此,您需要确保模型属性输出具有正确的javascript语法。