Jsf ui中有条件呈现的子类上的PropertyNotFoundException:重复

Jsf ui中有条件呈现的子类上的PropertyNotFoundException:重复,jsf,jsf-2,conditional,el,uirepeat,Jsf,Jsf 2,Conditional,El,Uirepeat,我有一个超类人: public class Person { public abstract Type getType(); } 我有2个子类: public class JuridicalPerson extends Person { public Type getType() { return Type.JP; } public List<JuridicalBelong> getJuridicalBelongs() {

我有一个超类

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;
    }
}
但是,这会导致以下异常:

javax.el.PropertyNotFoundException:类“com.example.NaturalPerson”没有属性“JuridicalBowners”

这怎么可能?根据我的
渲染
条件

<h:panelGroup rendered="#{person.type eq 'JP'}">


它应该忽略
NaturalPerson
,对吗?

这是由Mojarra的
状态管理中的一个错误引起的,当您在
中使用
EditableValueHolder
组件(输入字段)时,它也会暴露出来。这是固定的根据。该修复程序在JSF2.0/2.1中提供,并可用于根据进行后端口的JSF2.0/2.1。因此,至少升级到该版本(或根据提供的最新版本)就可以了


否则,最好的办法是用

替换
。在我的情况下,我没有升级Mojarra版本的选项,为了避免c:forEach(与ui可选呈现组件一起使用时会导致许多副作用),我用p:dataList替换了ui:repeat,它成功了。 你将不得不做一些CSS样式来隐藏子弹,但我认为这是值得的价格。
我希望它能帮助别人;)

你总是有正确的答案!感谢分享您的知识@BalusC!!!:)
<h:panelGroup rendered="#{person.type eq 'JP'}">