我有一个 JSF1.0 应用程序,我试图在 Tomcat 7 上运行。它目前在 Tomcat 6 上正确运行。
问题在于,在 Tomcat 7 上加载页面会呈现 XML(包含 JSF 标记的 JSP 文档),而不是解析所有标记的优点并发出所需的 HTML。
我已经解决了此处和其他地方报告的许多类似问题,包括 BalusC 在 this post 的评论中链接到的问题。 。这些都没有帮助解决问题。 Faces servlet 已正确配置,应用程序在 Tomcat 6 上运行没有问题。
我知道 Tomcat 7 附带了新版本的 Servlet、JSP 和 EL 规范,但我找不到 (a) 任何证据表明这是问题的一部分,或者 (b) 所需的新配置的任何指导在 Tomcat 7 上让我的应用程序运行。该应用程序还使用旧的 Struts Tiles 1,但我再次没有证据表明这是问题所在。
这是一些代码。
这是 JSP 文档。 这是呈现给浏览器的内容(不包括 XML 和 jsp:root 标记)。
<?xml version="1.0" encoding="UTF-8"?>
<jsp:root
xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:x="uri://uri/of/x"
version="1.2">
<jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
<x:view>
<html>
... etc (lots more tags from the app's taglib x)
</html>
</x:view>
</jsp:root>
这是 Faces servlet 映射
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
如何在 Tomcat 7 上启动并运行这批代码?
最佳答案
TLD 文件不应放置在 WEB-INF/lib 中
请参阅 JSP 规范的 JSP.7.3.1 节(Tomcat 6 为 2.1,Tomcat 7 为 2.2,Tomcat 8 为 2.3)。我没有回去检查早期的规范。
Tomcat 6 可以让你摆脱这个问题。 Tomcat 7 及以上版本并不是 Tomcat 6 和 Tomcat 7 之间 TLD 处理重构的结果。此重构中 TLD 处理进行了各种改进。其他更改之一是遵循 JSP.7.3.1 的要求。
关于升级到 Tomcat 7 后 JSP/JSF 文档无法正确呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18383997/