Я разрабатываю приложение в JSF2.0. Я столкнулся с проблемой при смешивании ajax и panelGroup с визуализированным атрибутом.
Моя страница содержит 3 панели. На первой панели пользователь выбирает элемент из <h:selectOneMenu>
. Это вызывает рендеринг второй панели.
Вторая панель содержит таблицу h: dataTable, которая подключена к DataModel в компоненте поддержки. Значения dataTable определяются элементом, который был выбран в <h:selectOneMenu>
первой панели. Каждая строка в таблице содержит команду link для просмотра подробной информации об элементе этой строки:
<h:commandLink action="#{faseController.selectInvulling}">
<f:ajax render="@form" execute="@form" />
</h:commandLink>
При нажатии на команду Link ссылка на третью панель отображается:
<h:panelGroup rendered="#{faseController.invullingSelected}" layout="block" styleClass="panelElement" id="invulling">
<label>
<span>Datum:</span>
<h:inputText value="#{faseController.selectedInvulling.datum}" required="true" requiredMessage="Gelieve een datum in te vullen." converterMessage="Gelieve een geldige datum in te vullen (dd/mm/jjjj)." >
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:inputText>
</label>
<label>
<span>Evaluatie</span>
<h:inputTextarea value="#{faseController.selectedInvulling.evaluatie}" cols="100" />
</label>
<label>
<span>Methode</span>
<h:inputTextarea value="#{faseController.selectedInvulling.methode}" cols="100" />
</label>
</h:panelGroup>
Здесь я сталкиваюсь с проблемой. В первый раз, когда я нажимаю на ссылку CommandLink, чтобы просмотреть подробную информацию об этой строке в таблице, я получаю правильные данные на третьей панели. После этого я изменяю элемент в <h:selectOneMenu>
на первой панели: на соответствующей панели отображается правильный соответствующий dataTable. Однако на этот раз, когда я нажимаю на ссылку commandLink в таблице, чтобы просмотреть подробную информацию об этом элементе, я получаю информацию об элементе, который щелкнул в первый раз.
Если я пропущу rendered="#{faseController.invullingSelected}"
, то все работает нормально, но это приводит к путанице в представлении, поскольку третья панель теперь всегда отображается.
Все три панели расположены в одной форме. Мой поддерживающий боб - ViewScoped. Что я делаю неправильно? Любая помощь будет принята с благодарностью.