1

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

4

2 に答える 2

3

リソースの問題である可能性があります。Firebug で項目の 1 つを選択すると、一致する CSS 宣言 (rf-ddm-lbl または rf-ddm-unsel) が表示されますか? firebugs net タブの使用中に 404 エラーがないか確認しましたか?

ところで: CSS ファイルはヘッダーで参照する必要があります。

于 2012-11-10T19:46:05.583 に答える
1

ここで答えを見つけました。追加する必要がありました

<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 を受け取る必要があります。

于 2012-11-13T00:41:44.110 に答える