【问题标题】:Can I put jsp specific code in an external script file我可以将 jsp 特定代码放在外部脚本文件中吗
【发布时间】:2014-03-28 11:05:32
【问题描述】:

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

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 一起工作,如果它可以做成一个可重用的模块,那就太好了。

【问题讨论】:

  • 您能告诉我们您收到的确切错误消息吗?

标签: javascript jsp requirejs requirejs-define


【解决方案1】:

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

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

输出一个application/javascript 内容类型,然后使用JSP 指令在.jsp 文件中正常写入你的JS。

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


然而,根据经验,最好还是坚持静态 JS 文件,并将动态生成的 JS 作为内联 &lt;script&gt; 包含在 HTML 文档中(尽管将此类 JS 保持在最低限度 - 刚好足以存储数据你需要)。这使得排序缓存规则更简单。

【讨论】:

  • 如果有人想将它作为查询字符串传递,我想我可以将它用作全局变量
  • 如何在requirejs 模块中访问它,我应该使用window.sessionParams 访问一个名为global variableglobal variablesessionParams
猜你喜欢
  • 1970-01-01
  • 2019-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多