次の 2 つの単純な POJO があります。
class Person {
String name
Address address;
//and of course the getter/setter for the attributes
}
class Address {
String city;
//also getter/setter for this attribute
}
そして、バッキング Bean:
@ManagedBean
@RequestScoped
class PersonController {
private List persons;
private List<String> columns = Arrays.toList("name", "address.city");
//of course getter/setter
}
次に、dataTable を作成します。
<p:dataTable var="person" value="#{personController.persons}" columnIndexVar="index">
<p:columns var="column" value="#{personController.columns}">
<h:outputText value="#{person[column]}"/>
<p:columms>
</p:dataTable>
これを実行すると、ServletException が発生します。
クラス Person にはプロパティ「address.city」がありません。
しかし、p:columns 内で次のようにプロパティ city にアクセスしようとすると:
<h:outputText value="#{person.address.city}"/>
すべて順調。
そのようなネストされたプロパティにアクセスできないのはなぜ#{person['address.city']}
ですか? また、どのようにアクセスできますp:columns
か?