Facelets:页面无法呈现

时间:2012-01-14 22:20:31

标签: tomcat jsf-2 richfaces facelets

我在Tomcat中使用JSF 2和RichFaces。我是初学者并尝试了我找到here的页面,但页面只是空白(内容未呈现)。我尝试添加Facelets 1.1库,页面呈现没有问题。但是,我在某处看到,使用JSF 2时,Facelets库不是必需的,因为它们默认包含在内。此外,当我添加Facelets库时,其他页面正在受到影响,我开始收到类似的消息 “库支持命名空间:http://java.sun.com/jsf/html,但没有为name定义标记: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. standard.jar
  7. 为简单起见,我的代码在这里(删除了一些部分以便它不会太长)。

    注意:当我在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>
    

2 个答案:

答案 0 :(得分:0)

您是否添加了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>

答案 1 :(得分:0)

您的图书馆存在库冲突,但我不确定它与您所指的问题有关。

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

  • RichFaces的-IMPL-3.3.3.Final.jar
  • RichFaces的-IMPL-jsf2-3.3.3.Final.jar

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