我正在使用JPA(EclipseLink 2.0)和Primefaces开发一个JSF应用程序.我想知道当el调用null对象的属性时是否有任何方法可以避免零点异常.我已经描述了这种情况.我有比尔课.Bill对象可能没有或多个BillItem对象.每个BillItem对象都有像Make,Country,Manufacturer等对象的对象.我在单个JSF文件中显示帐单的几个属性,如下所示.
"#{billControlled.bill.billItem.modal.name}"
Run Code Online (Sandbox Code Playgroud)
但是,如果未选择帐单,或者所选帐单没有帐单项,则在el中访问的属性为空.我可以通过为每个帐单创建新对象来避免这种情况,例如,为新帐单项目创建新品牌等,或者通过在控制器本身中为所有属性创建新属性.但这是一个很长的路,感觉像是愚蠢的.
有没有什么好的做法可以避免JSF中el的这个零点异常?
我得到了解决方案.在每个el之前,我可以检查null.
JSF:h:outputText; 当值为空字符串时如何显示短划线?
<h:outputText value="#{userHandler.user.phoneNumber != null
? userHandler.user.phoneNumber : '-'}" />
Run Code Online (Sandbox Code Playgroud)
要么
<h:outputText rendered="#{userHandler.user.phoneNumber ne null}" value="#{userHandler.user.phoneNumber}" />
Run Code Online (Sandbox Code Playgroud)
解决方案是检查null(您也可以检查为空)并使用render属性.
Empty可以与Collections一起使用(检查空和null),也可以使用null.
例如:
<h:outputText rendered="#{not empty myBean.myData}" value="..." />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9814 次 |
| 最近记录: |