У меня небольшая проблема с выпадающим списком, связанным с jsf.
У меня есть 2 выпадающих выбора: первый независимый, второй показывает результат в зависимости от Это код:
<h:panelGroup id="addressPanel">
<h:outputLabel styleClass="label" value="Provincia: " />
<h:selectOneMenu onchange="updateCombos()"
value="#{indirizzoCtrl.codiceProvincia}" >
<f:selectItem itemValue="" itemLabel=""></f:selectItem>
<f:selectItems value="#{indirizzoCtrl.allProvincia}" var="c"
itemLabel="#{c.nome}" itemValue="#{c.siglaProvincia}" />
</h:selectOneMenu>
<h:outputLabel styleClass="label" value="Comune: " />
<h:selectOneMenu
value="#{indirizzoCtrl.codiceComune}" >
<f:selectItem itemValue="" itemLabel=""></f:selectItem>
<f:selectItems value="#{indirizzoCtrl.allComuni}" var="c"
itemLabel="#{c.descrizione}" itemValue="#{c.codiceComune}" />
</h:selectOneMenu>
</h:panelGrid>
</h:panelGroup>
<p:remoteCommand name="updateCombos" update="addressPanel masterForm:msg" />
<p:commandButton styleClass="commandButton" value="Save"
actionListener="#{indirizzoCtrl.save}">
</p:commandButton>
Что ж, когда пользователь сохраняет форму после выбора обоих значений, управляемый bean-компонент indirizzoCtrl (область действия запроса) не может отобразить значение второго раскрывающегося списка обратно в список, поскольку списка нет.
На самом деле #{indirizzoCtrl.allComuni}
вызывает метод получения, который извлекает данные из БД, только если indirizzoCtrl.codiceProvincia!=null
... и это ложно до фазы обновления модели.
Таким образом, при первом вызове метода получения списка невозможно получить какие-либо значения, и это приводит к сбою фазы модели обновления.
Как я могу справиться с этим сценарием ... Я думаю, что он довольно распространенный, поэтому я что-то здесь упускаю ...