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>
from 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 メソッドと submenu メソッドは同様にコーディングされています。エラーは発生しません。ドロップダウン メニューにする必要があるテキストの 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