2012-01-17 52 views
0

我正在使用Richfaces 4.0/JSF 2.0/Tomcat。我创建了一个页面来渲染一个panelMenu和dropDownMenu。然而,panelMenu只是呈现为纯文本,而dropDownMenu则完全不呈现。查看屏幕图像: Screen captureRichfaces 4.0/JSF 2.0:为什么不显示panelMenu和dropDownMenu?

当我尝试与RichFaces 3.3.3相同时,它们呈现正确。但是,我开始得到一个错误,标签h:头在我的其他页面中无法识别。我已经添加了以下文件: -

  1. 的RichFaces组件的API-4.1.0.Final.jar
  2. RichFaces的组件-UI-4.1.0.Final.jar
  3. RichFaces的,芯 - API-4.1.0.Final.jar
  4. RichFaces的核心 - IMPL-4.1.0.Final.jar
  5. SAC-1.3.jar
  6. 番石榴r09.jar
  7. cssparser-0.9.5。罐子
  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> 

回答

0

我终于从here得到了我的答案。有几个问题: -

  1. 原来,RichFaces 4.0重命名了一些在web.xml中指定的参数,例如 org.richfaces.SKIN(now org.richfaces.skin), org.richfaces.CONTROL_SKINNING(now org.richfaces.enableControlSkinning)etc
  2. 看起来像没有h:head标签的皮肤将不起作用。

非常令人迷惑....

+2

此(和更多)被覆盖在[RF 3.3.x> RF 4.x的迁移指南(https://community.jboss.org/wiki/RichFacesMigrationGuide33x -4xMigration)。检查*应用程序描述符更新*章节。 ''只是一个新的JSF2标签,它允许组件库开发人员通过标准的API方法以编程方式包含CSS/JS文件,而不用使用自定义过滤器/渲染器。 – BalusC 2012-01-17 17:56:14