【问题标题】:Javascript file not accessing jstlJavascript文件未访问jstl
【发布时间】:2013-05-30 01:48:36
【问题描述】:

我的 jstl 代码位于我的 jsp 页面中的 javascript 文件中。 我遇到的问题是,当我在 jsp 页面内的脚本中编写我的 jstl 代码时,它工作正常。但是当我在单独的 js 文件中编写相同的代码时,jstl 代码根本不起作用。 无论如何我可以解决这个问题吗?任何帮助,将不胜感激。下面是我的代码。 谢谢

$("img[name='cancel']").hover(function(){
      var src = "<c:url value='/images/stop.ico'/>";
      $(this).attr("src",src);
  },function(){
      var src = "<c:url value='/images/gtk_close.ico'/>";
      $(this).attr("src",src);
  });

【问题讨论】:

  • JSP 得到解释的服务器端。我不明白这是怎么回事。
  • 假设您在 JS 文件中包含 &lt;script&gt; 元素,此包含由 浏览器完成。
  • 如果我将脚本标签放在 jsp 中,它可以正常工作。如果我通过包含带有脚本标签的外部 js 文件来做同样的事情,它不起作用。
  • 问题是你的JS文件必须包含,呃,JavaScript代码only。 JSTL 仅适用于视图(在本例中为您的 JSP 文件),而不适用于视图之外。最适合您的是在您的 JS 文件中包含变量,并使用相应的 EL/JSTL 代码将这些变量填充到您的 JSP 中。
  • 谢谢 Luigi,这就是我需要知道的。

标签: javascript jquery jstl


【解决方案1】:

JSP 在向浏览器生成输出之前由服务器解释,因此您的标签在提供给浏览器之前被解释。标准配置的 JS 文件不会被服务器解释,只是以纯文本的形式传递给客户端。

如果您想使用 JSP 动态生成 JS(如您的示例中所示),则需要先让服务器解释文件,然后再将其提供给客户端。最简单的方法是将 JS 的内容放入 JSP 文件中。然后在 html 页面上包含带有 script 标签且属性 src 等于 your.jsp 的脚本,例如

【讨论】:

  • 你测试过你最后的代码&lt;script src="script.jsp"&gt;&lt;/script&gt;吗?
  • 它的工作方式如下:浏览器将向服务器请求“script.jsp”。服务器(假设是 Tomcat 或任何可以处理 jsps 的服务器)将处理页面(将呈现所有 EL/JSTL 标签)并对浏览器产生响应。此时浏览器将看不到任何 JSP 标签。为了回答您的问题,是的,我使用了类似的技术来动态生成 JS。
  • 一个非常棒的想法@BeataGellner !它工作正常!我在包含 jsp 的 head 部分写了这个:&lt;jsp:include page="my_jsp_containing_javascript_userdefined_function.jsp"&gt;&lt;/jsp:include&gt;
猜你喜欢
  • 2017-02-18
  • 1970-01-01
  • 1970-01-01
  • 2021-08-23
  • 2012-10-15
相关资源
最近更新 更多