【问题标题】:JSF2: Tags not rendered but the usual "fixes" doesn't cut itJSF2:标签未呈现,但通常的“修复”并没有削减它
【发布时间】: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>

让事情顺利进行。如果我手动将地址输入到包含少量简单代码的随机测试页面中,问题仍然存在,因此问题与欢迎页面无关。

很乐意为您提供任何其他信息,但我真的陷入了困境。感谢阅读。

【问题讨论】:

    标签: jsf-2 rendering


    【解决方案1】:

    通过编辑 faces-config 以包含 xmlns:xsi 解决。

    【讨论】:

    • 你能发布你使用的确切代码吗?我遇到了同样的问题,我不确定将 xmlns:xsi 放在 faces-config.xml 文件中的哪个位置。
    猜你喜欢
    • 2013-04-21
    • 1970-01-01
    • 2011-02-15
    • 2014-02-25
    • 2015-09-08
    • 2014-03-14
    • 2012-07-19
    • 2012-05-08
    • 1970-01-01
    相关资源
    最近更新 更多