Map アイテムのリスト、つまり HashMaps の ArrayList などを繰り返し処理しようとしていますが、これを primefaces データテーブルで実行しようとしています。これは基本的に私がやろうとしていることです:
<body>
<h:form>
<p:dataTable value="#{customerBean.list}" var="map">
<c:forEach items="#{map}" var="entry">
<p:column headerText="#{entry.key}">
#{entry.value}
</p:column>
</c:forEach>
</p:dataTable>
</h:form>
</body>
この場合、customerBean.list
は でありList<Map<String, String>>
、エントリはMap<String, String>
です。
私がやりたいことは、Map<String, String>
マップエントリのキーをヘッダー名として使用し、値を出力として使用して、エントリの量に基づいて動的な量の列を作成することです。ハードc:forEach
コードされた を使用しているときは問題なく動作しているようですMap<String, String>
が、p:dataTable
. プログラムは、さまざまなサイズのマップをループする必要がないように予防策を講じていると思います。とにかく、どうすればこれを機能させることができますか?Map 内のエントリの量に基づいて任意の数の列を作成するにはどうすればよいですか? Map<String, String>
私はすべてが私の中で同じサイズであることを100%確信していることに注意してくださいList<Map<String, String>>
編集:
これが私の豆のソースです。コードは正常に動作し、すべてが問題です。問題は、ループがマップを通過しようとしないことです。
@ManagedBean
@SessionScoped
public class CustomerBean {
private List<Map<String, String>> list = new ArrayList<Map<String, String>>();
private Mapper mapper = new Mapper();
public CustomerBean() {
list = mapper.all(); //gets data from database
}
public List<Map<String, String>> getList() {
return list;
}
public void setList(List<Map<String, String>> list) {
this.list = list;
}
}