Я пытаюсь показать / скрыть свои панели на основе логического значения, присутствующего на компоненте поддержки, но он не работает должным образом и в пользовательском интерфейсе нет никаких изменений.Это работает нормально в первый раз (отображается только одна из панелей), когда приложение загружается, но затем после того, как обновление не выполнено.
Я знаю, что для выполнения обновления элемент должен уже существовать в dom, поэтому он не обновляет панель, которая не отображается сервером.Но мой вопрос заключается в том, почему другая панель (отображается при загрузке приложения) не скрывается при изменении логического условия.
xhtml файл
<p:panel>
<h6 align="center" style="width: 14.7em; background-color: #ACBECE;">Case
Type</h6>
<!-- comment type -->
<p:selectOneListbox id="caseTypeId"
value="#{treeBean.caseTypeOption}">
<f:selectItems value="#{treeBean.caseType}" var="X"
itemLabel="#{X}" itemValue="#{X}" />
<p:ajax listener="#{treeBean.caseTypeList}" update=":#{p:component('panel2')} :#{p:component('panel3')}"/>
</p:selectOneListbox>
</p:panel>
<p:panel id="panel2" rendered="#{treeBean.editmode}">
<h6 align="center" style="width: 14.7em; background-color: #ACBECE;">Something
</h6>
<p:selectOneListbox id="somethingId"
value="#{treeBean.somethingOption}">
<f:selectItems value="#{treeBean.something}" var="X"
itemLabel="#{X}" itemValue="#{X}" />
</p:selectOneListbox>
</p:panel>
<p:panel id="panel3" rendered="#{!treeBean.editmode}">
<h6 align="center" style="width: 14.7em; background-color: #ACBECE;">Anything
</h6>
<p:selectOneListbox id="anythingId"
value="#{treeBean.anythingOption}">
<f:selectItems value="#{treeBean.anything}" var="X"
itemLabel="#{X}" itemValue="#{X}" />
</p:selectOneListbox>
</p:panel>
</h:panelGrid>
Поддержкаbean (опуская детали)
if (this.caseTypeOption.equalsIgnoreCase("XXX")) {
this.editmode = false;
} else {
this.editmode = true;
}
где XXX является одним из вариантов в поле выбора caseTypeId.
Как заставить это работать для обеих панелей ??