Я новичок в 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;
//...
}
index.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 кнопки. Всякий раз, когда я нажимаю любую кнопку, появляется метка внутри условно отображаемой панелиGroup, но включенная страница не отображается. Если я изменю 'menuItem1' var с первого пользовательского интерфейса: повтор, это сработает, но это действительно непредсказуемо. Например, если я жестко задал для параметра SelectedItemLabel значение «page_1», тогда, когда я нажму кнопку_1, отобразится страница_1, но даже если я нажму кнопку_2, страница_2 (!?) отобразится...