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'}">