各种JSP页面意外地没有导入他们正在使用的taglib。
例如,JSP正在使用:<c:if>...</c:if>
但是,没有<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
。
当Tomcat 7编译JSP时,没有错误。
编译的JSP只包含<c:if>
而不是替换这些标记。
在这些情况下,有谁知道如何阻止JSP成功编译?
我在web.xml中使用了以下JspServlet配置:
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>mappedfile</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>genStringAsCharArray</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
谢谢!
答案 0 :(得分:1)
我不知道有什么方法可以做到这一点 - <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
声明告诉tomcat的JSPC遇到<c:.../>
标记时该做什么。如果缺少此声明,tomcat不知道如何处理它 - 所以它不会触及它。
如果您依赖此检查,您可能希望在构建过程中使用某些脚本检查,或者使用JSPC在构建期间预编译JSP,并检查生成的servlet是否出现可疑文本/标记。
可能的标记库的数量是无限的,它们的名称也是如此。而且您可能在页面上有更多的处理,而不仅仅是JSP-to-servlet compiter。当剩下一个命名空间的HTML标签时,我从未遇到过触发错误的选项 - 由于这个答案中给出的原因,我从未认为会有一个。