我是 JSF 的新手,我正在努力动态渲染包含的页面。我的代码如下所示:
菜单豆
@ViewScoped
public class MenuBean implements Serializable {
private MenuItem[] menuItems = new MenuItem[] {
new MenuItem("page_1", "/page_1.xhtml"),
new MenuItem("page_2", "/page_2.xhtml"),
};
private String selectedItemLabel;
//...
}
菜单项
public class MenuItem implements Serializable {
private String label;
private String page;
//...
}
索引.xhtml
<ui:repeat var="menuItem" value="#{menuBean.menuItems}">
<h:panelGroup rendered="#{menuBean.selectedItemLabel eq menuItem.label}" layout="block">
<h:outputText value="#{menuBean.selectedItemLabel}" />
<ui:include src="#{menuItem.page}" />
</h:panelGroup>
</ui:repeat>
结果是呈现了 2 个按钮。每当我单击任何按钮时,都会出现有条件渲染的 panelGroup 内的标签,但包含的页面不会出现。如果我从第一个 ui:repeat 更改 'menuItem1' var,它会起作用,但它确实是不可预测的。例如,如果我将 setSelectedItemLabel 参数硬编码为“page_1”,那么当我点击 button_1 时会显示 page_1,但即使我点击 button_2 page_2 (!?) 也会显示...