2012-11-06 53 views
1

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

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的所引用:頭和h:body標記:

<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> 

從後臺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螢火蟲輸出的文字,應該是一個下拉菜單,如下所示:

<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 

通過螢火蟲輸出我可以看到所有的子菜單導航 - 但是他們都是文字參考。 我看到了我的所有css文件 - 它們在身體而不是頭部顯示,但他們都在那裏。 我錯過了什麼嗎?我還能檢查什麼?

的JBoss 7.1.1煤層2.3.0 JSF2.1的RichFaces 4.2.2

+0

這是否僅出現在動態生成的組件或**全部**您的richfaces組件未設置樣式? – kolossus

+0

只有動態生成的組件 – gebuh

回答

1

找到了答案here。我需要添加

<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個錯誤。在賞金結束後,我會標記這一個正確的,你應該得到它的一半。

+0

很高興你能解決它!謝謝。 – claudegex

2

可能是資源問題。當你在Firebug中選擇其中一個項目時,是否看到任何匹配的CSS聲明(rf-ddm-lbl或rf-ddm-unsel)?你檢查使用螢火蟲淨選項卡的任何404錯誤?

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

+0

是的,有聲明 - 我貼了幾個例子。我不知道爲什麼參考文獻在正文中出現 - 它們是在模板文件的頭部聲明的。我用httpWatch查看代碼,沒有看到任何404錯誤。 – gebuh

+0

有沒有機會提供一個運行示例來分析? – claudegex

+0

抱歉@claudgex,不,我們支持所有防火牆。 – gebuh

相關問題