簡體   English   中英

Richfaces 4動態創建的豐富組件顯示為文本而不是菜單/鏈接

[英]Richfaces 4 dynamically created rich components display as text instead of menus/links

我正在從RF3.3.3,JSF1.2和jboss 5遷移到JSF2 / RF4。 我們有一個豐富的工具欄組,其中包含從數據庫表生成的下拉菜單。 我對web.xml進行了更改,重命名了支持bean中的適用組件,但工具欄只顯示為文本而不是下拉菜單和鏈接。

web.xml中:

<?xml version="1.0"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.enableControlSkinning</param-name>
  <param-value>true</param-value>
 </context-param>
 <context-param>
  <param-name>org.richfaces.enableControlSkinningClasses</param-name>
  <param-value>false</param-value>
 </context-param>

 <context-param>
  <param-name>org.richfaces.resourceOptimization.enabled</param-name>
  <param-value>true</param-value>
 </context-param>

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

menu.xhtml - 包含在帶有h:head和h:body標簽的template.xhtml中:

<h:form id="mnMenu">
<rich:toolbar id="tb" >
    <rich:toolbarGroup>
    <s:link id="menuHomeId" view="/home.xhtml" value="Home" propagation="none"/>
    </rich:toolbarGroup>

    <rich:toolbarGroup binding="#{menuQueries.myBarGrp}" />

</rich:toolbar>
<!-- account for jsf bug? bug DOESN'T WORK -->
    <rich:toolbar rendered="false"/>
    <rich:toolbarGroup rendered="false"/>
    <rich:dropDownMenu rendered="false"/>
    <rich:menuGroup rendered="false"/>
    <rich:menuItem rendered="false"/>
</h:form>

來自backing bean - 此方法創建工具欄組,它原來如下所示:

public HtmlToolBarGroup getMyBarGrp()
{
     this.myBarGrp = new org.richfaces.component.html.HtmlToolBarGroup();
     for (CtsPermissionHierarchyAltV each : this.getMainMenuList()) {
          this.myBarGrp.getChildren().add(getDropDownMenu(each));
     }
return this.myBarGrp;
}

我將其改為此,兩者都生成相同的輸出:

public UIToolbarGroup getMyBarGrp()
{
     FacesContext ctx = FacesContext.getCurrentInstance();
     this.myBarGrp = (UIToolbarGroup) ctx.getApplication().createComponent(ctx,     
      UIToolbarGroup.COMPONENT_TYPE, "org.richfaces.ToolbarGroupRenderer");
     this.myBarGrp.setId("dynMenuGrp");
     for (CtsPermissionHierarchyAltV each : this.getMainMenuList()) 
     {    
          this.myBarGrp.getChildren().add(getDropDownMenu(each));
     }
}

getDropDownMenu和子菜單方法的編碼方式相似。 我沒有收到任何錯誤。 應該是下拉菜單的文本的FF firebug輸出如下所示:

<div id="mnMenu:Communications" class="rf-ddm-lbl rf-ddm-unsel ">
... more stuff

遷移前它看起來像這樣:

<div id="mnMenu:Communications" class="rich-ddmenu-label rich-ddmenu-label-unselect">
... more stuff

瀏覽firebug輸出我可以看到所有子菜單 - 但它們都是文本參考。 我看到了所有的css文件 - 它們出現在身體而不是頭部,但它們都在那里。 我錯過了什么? 我還能檢查什么?

jboss 7.1.1 Seam 2.3.0 JSF2.1 RichFaces 4.2.2

可能是一個資源問題。 當您選擇Firebug中的一個項目時,您是否看到任何匹配的CSS聲明(rf-ddm-lbl或rf-ddm-unsel)? 您是否在使用firebugs網絡標簽時檢查了404錯誤?

順便說一句:CSS文件應該在標題中引用。

這里找到答案。 我需要補充一下

<servlet>
    <servlet-name>Resource Servlet</servlet-name>
    <servlet-class>org.richfaces.webapp.ResourceServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
 <servlet-mapping>
    <servlet-name>Resource Servlet</servlet-name>
    <url-pattern>/org.richfaces.resources/*</url-pattern>
</servlet-mapping>

到web.xml。 不知道為什么它有效,這個解決方案適用於使用servlet2.5的容器,並且(據我所知)我正在使用servlet3.0。

claudegex你的答案讓我走上了解決它的道路 - 實際上有404個錯誤。 在賞金結束后,我會將此標記為正確,你應該得到它的1/2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM