У меня есть <p:dataTable>
с ленивой загрузкой. В двух столбцах в каждом из них есть <p:selectOneMenu>
.
В первом столбце содержится список стран, а второй содержит список состояний из базы данных.
Я хочу, чтобы второе меню (тот, который содержит список состояний) отображал только те состояния в каждой строке таблицы данных, которые соответствуют стране в первом меню в каждая строка таблицы данных.
В режиме редактирования, когда страна в своем меню изменена, состояния, соответствующие этой стране, должны быть заполнены в ее меню в этой текущей строке.
Как загрузить такие списки состояний, которые соответствуют их странам в каждой строке таблицы данных?
Эти два столбца в таблице данных остаются неполными, так как у меня нет четкого представления о том, как достичь этого.
<p:column>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{row.state.country.countryName}"/>
</f:facet>
<f:facet name="input">
<p:selectOneMenu value="#{row.state.country}">
<f:selectItems var="country"
value="#{cityBean.selectedCountries}"
itemLabel="#{country.countryName}"
itemValue="#{country}"/>
<p:ajax update="states" listener="#{cityBean.getStates}"/>
</p:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
<p:column>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{row.state.stateName}"/>
</f:facet>
<f:facet name="input">
<p:selectOneMenu id="states">
<f:selectItems var="state"
value="#{cityBean.selectedStates}"
itemLabel="#{state.stateName}"
itemValue="#{state}"/>
</p:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
cityBean.selectedCountries
извлекает все страны, которые необходимы, но cityBean.selectedStates
также извлекает все состояния из базы данных, которая не является необходимой и должна быть изменена, чтобы извлекать только те состояния, которые соответствуют его стране в другом меню.
Как я могу исходить отсюда?