【问题标题】:Facelets: Page Not Getting RenderedFacelets:页面未呈现
【发布时间】:2012-02-10 13:21:40
【问题描述】:

我在 Tomcat 中使用 JSF 2 和 RichFaces。我是一个初学者,正在尝试我找到的页面here,但页面只是空白(内容未呈现)。我尝试添加 Facelets 1.1 库并且页面呈现没有问题。但是,我在某处读到,使用 JSF 2,Facelets 库不是必需的,因为它们默认包含在内。此外,当我添加 Facelets 库时,其他页面会受到影响,我开始收到类似的消息 “库支持命名空间:http://java.sun.com/jsf/html,但没有为名称定义标签:head”,页面在没有库的情况下也可以正常工作。 我还在 /WEB-INF/lib 目录中包含了以下库:

  1. richfaces-api-3.3.3.Final.jar
  2. richfaces-impl-3.3.3.Final.jar
  3. richfaces-impl-jsf2-3.3.3.Final.jar
  4. richfaces-ui-3.3.3.Final.jar
  5. jstl.jar
  6. 标准.jar

为简单起见,我的代码在这里(删除了一些部分,以免太长)。

注意:当我在 h:form 或 h:panelGrid 中插入一些纯文本时,它会毫无问题地呈现。

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<style>
    .cols {
        vertical-align: top;
        }
</style>
<h:form id="form">
    <h:panelGrid columns="2" columnClasses="cols,cols" width="400">
        <rich:panelMenu style="width:200px" mode="ajax"
            iconExpandedGroup="disc" iconCollapsedGroup="disc"
            iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right"
            iconCollapsedTopGroup="chevronDown">
            <rich:panelMenuGroup label="Group 1">
                <rich:panelMenuItem label="Item 1.1"
                    action="#{panelMenu.updateCurrent}">
                    <f:param name="current" value="Item 1.1" />
                </rich:panelMenuItem>
                <rich:panelMenuItem label="Item 1.2"
                    action="#{panelMenu.updateCurrent}">
                    <f:param name="current" value="Item 1.2" />
                </rich:panelMenuItem>
                <rich:panelMenuItem label="Item 1.3"
                    action="#{panelMenu.updateCurrent}">
                    <f:param name="current" value="Item 1.3" />
                </rich:panelMenuItem>
            </rich:panelMenuGroup>
        </rich:panelMenu>
        <rich:panel bodyClass="rich-laguna-panel-no-header">
            <a4j:outputPanel ajaxRendered="true">
                <h:outputText value="#{panelMenu.current} selected" id="current" />
            </a4j:outputPanel>
        </rich:panel>
    </h:panelGrid>
</h:form>

【问题讨论】:

    标签: tomcat jsf-2 richfaces facelets


    【解决方案1】:

    你添加了 jsf 2.0 库吗?

    <dependency>
      <groupId>javax.faces</groupId>
      <artifactId>javax.faces-api</artifactId>
      <version>2.1</version>
      <scope>provided</scope>
    

    并像这样配置你的 web xml?

    <servlet>
    
    <servlet-name>Faces Servlet</servlet-name>
    
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    
    <load-on-startup>1</load-on-startup>
    

    <servlet-name>Faces Servlet</servlet-name>
    
    <url-pattern>*.jsf</url-pattern>
    

    <servlet-name>Faces Servlet</servlet-name>
    
    <url-pattern>/*</url-pattern>
    

    【讨论】:

    • 嗨,jsf-api.jar 和 jsf-impl.jar 是随 Java EE 6 库添加的,它们都是 MANIFEST.MF 文件中的 Implementation-Version: 2.0.3-FCS。 web.xml 具有上述配置。但是我不确定在哪里添加依赖项?
    • 您是使用tomcat 6 还是tomcat 7。İf 7 您不需要做任何事情。它必须工作。如果 6,您必须使用 mojarra 库更改 tomcat 目录中的旧库
    【解决方案2】:

    您的库中存在库冲突,但我不确定这与您所指的问题有关。

    您的项目中不应包含以下两个库:

    • richfaces-impl-3.3.3.Final.jar
    • richfaces-impl-jsf2-3.3.3.Final.jar

    它们包括一组相似的类。如果您使用的是 JSF 2,请从类路径中删除 richfaces-impl-3.3.3.Final.jar。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-25
      • 2013-01-08
      • 2011-03-08
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多