jru*_*ier 5 java polymorphism jsf java-ee-6 jsf-2
我需要显示/编辑多态实体.
我的抽象类是Person.我的具体课程是PhysicalPerson和MoralPerson
每个具体类都有自己的自定义属性.
如何根据实体类使用适当的显示/编辑(复合)组件?
谢谢 !:)
EL 中没有这样的东西instanceof。但是,您也可以(滥用)使用Object#getClass()和访问 EL 中的 getter Class。然后只需确定组件rendered属性中的结果即可。
<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>
Run Code Online (Sandbox Code Playgroud)
然而,自定义 EL 函数会更简洁。请注意,由于 EL 中允许的属性名称具有极其严格的限制,因此上述内容不适用于 Tomcat 7 和克隆。Java 保留文字如class不再允许。你需要#{entity['class'].name}等等。
| 归档时间: |
|
| 查看次数: |
1142 次 |
| 最近记录: |