当我将变量定义到服务器上下文中时,有时我需要将它用于javascript上下文;例如会话ID。
有什么更好的方法呢?
我想分开 javascript文件和查看文件(在我的情况下为jsp
);目前我找到了两种方法:
1 )myVariables.js.jsp
:创建一个返回javascript代码的jsp文件
myLib = {
sessionID: "${sessionId}",
[...]
}
并将其作为javascript导入jsp视图文件中:
<html>
<head>
<script src="myVariables.js.jsp"></script>
[...]
</head>
<body>
[...]
</body>
</html>
我可以写会话ID:myLib.sessionId
。
优点:方便快捷。
缺点:写一个充当jsp
的{{1}}文件。
2 )将服务器变量保存到隐藏的输入字段中(例如,在模板的主要部分中):
js
我能够将会话ID写入<html>
<head>
<script src="myLib.js"></script>
[...]
</head>
<body>
<form id="myVariables">
<input type="hidden" name="sessionId" value="${sessionId}" />
[...]
</form>
[...]
</body>
</html>
库中的特定函数:
myLib.js
优点:javascript和视图完全分开。
缺点:要编写更多代码;比以前更难理解。
答案 0 :(得分:0)
在我看来,第一种方式更好,因为您的网页将更干净,更易读。这非常重要! ;)
祝你好运
答案 1 :(得分:0)
我认为第三种方式可以充分利用您的两个建议:包含变量的内联脚本标记:
<html>
<head>
<script>
var myLib = {
sessionID: "${sessionId}",
[...]
};
</script>
</head>
<body>
[...]
</body>
</html>
没有单独的JSP可写。就像你问题中的第二个解决方案一样,JavaScript只与myLib
绑定,正如第二个解决方案中的JavaScript与表单结构相关联。
我们应该提出的第一个解决方案有一个好处:它允许浏览器缓存HTML(通过将变量分成单独的请求,例如.js.jsp
)。将变量与HTML结合使用(如上所述,或者问题中的第二种方法)意味着必须在缓存减少或禁用的情况下提供HTML。