Javascript引擎如何解释以下代码?
我以为只是解释了嵌入在html中的JSTL标签?
<script type="text/javascript">
<c:choose>
<c:when test="${fn:contains(val, 'test')}">
alert('test);
</c:when>
</c:choose>
</script>
答案 0 :(得分:4)
JavaScript引擎不解释JSTL,因为它没有看到它。在将响应发送到浏览器之前,JSTL在服务器端处理。 JSTL / Java方面只关心JSTL / Java代码 - 其他所有内容基本上都是在响应中传递的。因此,如果您包含脚本元素或JavaScript或其他html元素并不重要,所有这些都将成为响应的一部分。
如果您选择“查看页面来源”,则在您的浏览器中,您将看到浏览器收到的代码 - 您会注意到它不包含任何JSTL。
在您的具体示例中,响应将 - 根据JSTL测试的结果 - 包含带有该行alert('test')
的脚本元素或仅包含空脚本元素。
答案 1 :(得分:0)
您需要运行一个Java Servlet / JSP服务器(即Tomcat),它使用嵌入的JSTL标记处理您的JSP文件。浏览器再也看不到JSTL标签了。