升级到 Tomcat 7 后 JSP/JSF 文档无法正确呈现

标签 jsp jsf tomcat tomcat7

我有一个 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/

相关文章:

apache - 可能是端口错误

java - 该模块尚未部署。 Tomcat 8.0 和 Netbeans 8.0.2

Java Spring + ReactJs

jquery - 仅当自动宽度大于当前宽度时才更改元素(选择框)的宽度-jquery

java - Jsp 可编辑数据网格

java - 关于 Java 指针和更改 JSF 应用程序中的语言环境的基本知识

java - JSF - 数据表中的 ValueChangeListener

javascript - iframe 查询字符串

jsf - 那里有免费的 JSF Webhost 吗?

spring - Tomcat 6/7 - 如何覆盖 Web 应用程序中的属性文件?