我有一個超類Person
:PropertyNotFoundException上有條件地呈現的子類中的ui:重複
public class Person {
public abstract Type getType();
}
我有2個亞類的它:
public class JuridicalPerson extends Person {
public Type getType() {
return Type.JP;
}
public List<JuridicalBelong> getJuridicalBelongs() {
return juridicalBelongs;
}
}
public class NaturalPerson extends Person {
public Type getType() {
return Type.NP;
}
public List<NaturalBelong> getNaturalBelongs() {
return naturalBelongs;
}
}
JuridicalBelong
和NaturalBelong
具有不同的性質和罐不會被分類。
我有他們在List<Person>
想我呈現在JSF/Facelets的如下:
<ui:repeat value="#{bean.persons}" var="person">
<h:panelGroup rendered="#{person.type eq 'JP'}">
<ui:repeat value="#{person.juridicalBelongs}" var="juridicalBelong">
...
</ui:repeat>
</h:panelGroup>
<h:panelGroup rendered="#{person.type eq 'NP'}">
<ui:repeat value="#{person.naturalBelongs}" var="naturalBelong">
...
</ui:repeat>
</h:panelGroup>
</ui:repeat>
然而,這導致了以下情況例外:
javax.el.PropertyNotFoundException :「com.example.NaturalPerson」類沒有「juridicalBelongs」屬性。
這怎麼可能?按我rendered
條件
<h:panelGroup rendered="#{person.type eq 'JP'}">
應該忽略NaturalPerson
,對不對?
你總是有正確的答案!感謝您分享您的知識@BalusC! :) – marcel 2015-04-22 14:14:44