如何使用JSF2处理多态?

我需要显示/编辑多态实体.

我的抽象类是Person.
我的具体课程是PhysicalPerson和MoralPerson

每个具体类都有自己的自定义属性.

如何根据实体类使用适当的显示/编辑(复合)组件?

谢谢 ! 🙂

最佳答案
在EL中没有像instanceof这样的东西.但是,您可以(ab)使用Object#getClass()并访问EL中的Class的getter.然后只需确定组件的渲染属性中的结果.

<h:panelGroup rendered="#{entity.class.name == 'com.example.PhysicalPerson'}">
    <p>According to Class#getName(), this is a PhysicalPerson.</p>
</h:panelGroup>
<h:panelGroup rendered="#{entity.class.simpleName == 'MoralPerson'}">
    <p>According to Class#getSimpleName(), this is a MoralPerson.</p>
</h:panelGroup>

然而,自定义EL功能会更干净.请注意,由于EL中允许的属性名限制极为严格,因此上述内容不适用于Tomcat 7和克隆.不再允许Java保留的文字,例如类.你需要#{entity [‘class’].name}等等.

转载注明原文:如何使用JSF2处理多态? - 代码日志