【问题标题】:Richfaces 4.0/JSF 2.0: Why are panelMenu and dropDownMenu not rendered?Richfaces 4.0/JSF 2.0:为什么不呈现 panelMenu 和 dropDownMenu?
【发布时间】:2012-02-12 03:11:30
【问题描述】:

我正在使用 Richfaces 4.0/JSF 2.0/Tomcat。我创建了一个页面来呈现 panelMenu 和 dropDownMenu。但是,panelMenu 只是呈现为纯文本,而 dropDownMenu 则完全不呈现。见屏幕图像:

当我尝试使用 RichFaces 3.3.3 时,它们会正确呈现。但是,我开始收到标签 h:header 在我的其他页面中无法识别的错误。我添加了以下文件:-

  1. richfaces-components-api-4.1.0.Final.jar
  2. richfaces-components-ui-4.1.0.Final.jar
  3. richfaces-core-api-4.1.0.Final.jar
  4. richfaces-core-impl-4.1.0.Final.jar
  5. sac-1.3.jar
  6. guava-r09.jar
  7. cssparser-0.9.5.jar
  8. jsf-api.jar 和 jsf-impl.jar (2.0)

我的代码:

    <h:body>

    <h:form id="form2">
        <rich:dropDownMenu value="MENU">
            <rich:menuItem value="ITEM1"></rich:menuItem>
            <rich:menuItem value="ITEM2"></rich:menuItem>
        </rich:dropDownMenu>
    </h:form>
    <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>
</h:body>

我的 web.xml:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<context-param>
    <param-name>org.richfaces.SKIN</param-name>
    <param-value>blueSky</param-value>
</context-param>

<context-param>
    <param-name>org.richfaces.CONTROL_SKINNING</param-name>
    <param-value>enable</param-value>
</context-param>
<context-param>
    <param-name>org.richfaces.LoadScriptStrategy</param-name>
    <param-value>ALL</param-value>
</context-param>

<context-param>
    <param-name>javax.faces.CONFIG_FILES</param-name>
    <param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xhtml</param-value>
</context-param>

<context-param>
    <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
    <param-value>com.sun.facelets.FaceletViewHandler</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>*.faces</url-pattern>
</servlet-mapping>

【问题讨论】:

    标签: jsf richfaces


    【解决方案1】:

    我终于从here 得到了答案。有很多问题:-

    1. 原来 RichFaces 4.0 重命名了 web.xml 中指定的一些参数,例如 org.richfaces.SKIN(现为 org.richfaces.skin), org.richfaces.CONTROL_SKINNING(现为 org.richfaces.enableControlSkinning)等
    2. 看起来没有 h:head 标记将无法进行蒙皮。

    相当混乱....

    【讨论】:

    • RF 3.3.x > RF 4.x migration guide 涵盖了这个(以及更多)内容。检查应用程序描述符更新章节。 &lt;h:head&gt; 只是一个新的 JSF2 标记,它允许组件库开发人员通过标准 API 方法以编程方式包含 CSS/JS 文件,而无需使用自定义过滤器/渲染器。
    猜你喜欢
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2012-09-04
    • 2012-04-28
    • 2014-12-27
    • 2014-09-05
    • 2012-02-10
    • 2011-04-21
    相关资源
    最近更新 更多