【发布时间】:2014-10-24 23:49:18
【问题描述】:
我有一个超类Person:
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,对吧?
【问题讨论】:
标签: jsf jsf-2 conditional el uirepeat