我可以将jsp特定代码放在外部脚本文件中吗?

时间:2014-03-28 11:05:33

标签: javascript jsp requirejs requirejs-define

我想使用requirejs'Servlet函数在外部js文件中使用HttpSession获取define发送的值:

define(function(){
    return {
        /*Get values from the java session*/
        gisuniqkey:<%=session.getAttribute('gisuniqkey')%>,
        scenario:<%=session.getAttribute('scenario')%>,
        operation:<%=session.getAttribute('operation')%>,
        objkey:<%=session.getAttribute('objkey')%>
    }
});

有可能这样做吗?这样做时我应该包含哪些依赖项? Eclipse告诉我这样做时会出错。

错误消息只是将其称为语法错误:

 Uncaught SyntaxError: Unexpected token < java_to_script.js:3
 Uncaught TypeError: Cannot read property 'gisuniqkey' of undefined     
 gmaps_createScenario.js:15

我所关心的是我不在jsp中使用全局变量......并且它应该与require.js一起使用,如果它可以成为一个可重用的模块,那将是非常出色的。

1 个答案:

答案 0 :(得分:0)

您不能在静态.js文件中使用JSP。

您可以在输出JavaScript文件的.jsp文件中使用JSP。

输出application/javascript内容类型,然后使用您希望的JSP指令在.jsp文件中正常编写JS。

请注意,由于JavaScript文件将单独请求HTML文件,因此您将无法读取用于从JavaScript文件中的JSP指令请求HTML文件的查询字符串(尽管您可以通过)它们通过会话,或将它们添加到src元素的<script>


然而,作为经验法则,通常最好坚持使用静态JS文件,并在HTML文档中包含动态生成的JS作为内联<script>(尽管将这样的JS保持在最低限度 - 足以存储你需要的数据)。这使得排序缓存规则更加简单。