我正在从 RF3.3.3、JSF1.2 和 jboss 5 迁移到 JSF2/RF4。我们有一个丰富的工具栏组,其中包含从数据库表生成的下拉菜单。我对 web.xml 进行了更改,重命名了支持 bean 中的适用组件,但工具栏将仅显示为文本,而不是下拉菜单和链接。
网页.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 和 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
浏览萤火虫输出我可以看到所有的子菜单——但它们都是文本引用。我看到了我所有的 css 文件——它们出现在身体而不是头部,但它们都在那里。我错过了什么?我还能检查什么?
jboss 7.1.1 接缝 2.3.0 JSF2.1 RichFaces 4.2.2