【发布时间】:2011-10-12 07:52:54
【问题描述】:
我的问题类似于: JSF tags not rendered、JSf tags not being rendered 和 JSF tags not being rendered as HTML 没有任何建议对我有帮助。
基本上,问题是无论是否通过欢迎页面,该页面都不会呈现。 IE 尝试下载文件,而 chrome 基本上只是跳过了所有的 jsf 标签。很明显它不是由框架翻译的,但我不明白为什么。
背后的故事是,我做了一个试点,将系统从 jsf 1.2 转换为 jsf2。试点很成功,我设法让它在试点部门工作。但是,当我这次尝试真正实现相同的目标时,我无法让它发挥作用。
通常的问题似乎是(据资深回答者 BalusC 所说):
页面 URL 与 FacesServlet 的 url-pattern 不匹配,因此它没有任何机会解析标签。 或者:标签中缺少 JSF 组件的 xmlns 声明,因此被视为纯文本。
通常的修复方法似乎是: 在 html 声明中包含 xmlns(我在 web.xml 和 .xhtml 文件中都有这个) 在 web.xml 中包含或修改 Faces Servlet 映射。然而,我找不到我的错误。我还尝试将 /faces/* 切换到 *.xhtml。我认为与 web.xml 相关的部分包括在下面(整个文件很大,这是一个大系统):
web.xml 的一部分:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_5.xsd"
version="2.5">
<context-param>
<description>
Tell the runtime where we are in the project development
lifecycle.
</description>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
<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>*.jsf</url-pattern>
<url-pattern>*.xhtml</url-pattern>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<welcome-file-list id="default">
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
</welcome-file-list>
我知道欢迎文件是一个 html 文件,但这在试点中有效。该文件使用
<body bgcolor="#FFFFFF" onload="window.location='portal/login/login.jsf'">
</body>
让事情顺利进行。如果我手动将地址输入到包含少量简单代码的随机测试页面中,问题仍然存在,因此问题与欢迎页面无关。
很乐意为您提供任何其他信息,但我真的陷入了困境。感谢阅读。
【问题讨论】: