将数据列绑定到数据源中可能存在或可能不存在的属性的最佳方法是什么?
例如,如果您有一个类层次结构,其中某些子级可能属于具有该属性的子类型,则会发生这种情况.数据源包含各种子类类型.
<DataColumn outputText="#{item.property}" />
Run Code Online (Sandbox Code Playgroud)
当其中一个子类中不存在该属性时,始终会产生一个PropertyNotFoundException.我不想在基类中包含该属性,因为根据业务规则它不应该存在.
你会如何解决这个问题?
在不改变课程的情况下,最好的办法就是选择instanceofEL 课程.您可以通过检查由(Object#getClass()然后)Class#getName()或Class#getSimpleName()在EL中获取的(简单)类名来实现.
假设具有该属性的类具有完全限定名称com.example.SubItem,这是一个示例:
<h:outputText value="#{item.property}" rendered="#{item.class.name == 'com.example.SubItem'}" />
Run Code Online (Sandbox Code Playgroud)
要么
<h:outputText value="#{item.property}" rendered="#{item.class.simpleName == 'SubItem'}" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6826 次 |
| 最近记录: |