Kolossus は非常に優れた提案をしてくれましたが、実際には、どれもあなたが望むデータを提供しない可能性が高いです。したがって、3 番目の方法を提案します。ビューのニーズを考慮して、モデルを少し変更します。のすべての行がリストから現在反復さ<p:dataTable>
れている要素で構成されており、その反復が唯一の反復であるため、これを行う必要があります。したがって、機能を実現するには、基本的にモデルのプレゼンテーションを変更することにより、反復要素内で必要なすべての行情報を提供する必要があります。
Country
アプローチの 1 つは、State
オブジェクト (または表示する必要がある文字列プロパティ)を含む追加のクラスを作成することです。
public class CountryState {
private Country country;
private State state;
}
「その場で」(または事前に)反復用のリストを作成します。
public List<CountryState> getCountryStates(List<Country> countries) {
List<CountryState> lst = new ArrayList<CountryState>();
for(Country country : countries) {
for(State state : country.getState()) {
lst.add(new CountryState(country, state);
}
}
return lst;
}
そしてそれをあなたのデータテーブルで使用してください:
<p:dataTable value="#{bean.countryStates}" var="cs">
<p:column headerText="Country name">
<h:outputText value="#{cs.country.name}" />
</p:column>
<p:column headerText="State name">
<h:outputText value="#{cs.state.name}" />
</p:column>
<p:column headerText="State code">
<h:outputText value="#{cs.state.code}" />
</p:column>
</p:dataTable>
<p:panelGrid>
または、行/列を結合したい場合は使用を検討してください。