3

我正在使用 JPA(EclipseLink 2.0) 和 Primefaces 开发 JSF 应用程序。我想知道当el调用空对象的属性时有什么方法可以避免空点异常。我已经描述了情况。我有比尔课。可能没有或有多个带有 Bill 对象的 BillItem 对象。每个 BillItem 对象都有 Make、Country、Manufacturer 等对象。我正在像这样的单个 JSF 文件中显示账单的多个属性。

"#{billControlled.bill.billItem.modal.name}"

但是,如果未选择账单,或者当没有选定账单的账单项目时,EL中访问的属性为null。我可以通过为每个账单创建新对象来避免这种情况,例如,为新账单项目创建新品牌等,或者通过在控制器本身中为所有属性创建新属性。但这是一条很长的路,感觉很初级。

有没有什么好的做法可以避免 JSF 中的 el 中出现这个空点异常?

4

2 回答 2

5

我得到了解决方案。在每个 el 之前,我可以检查 null。

JSF:h:输出文本;当值为空字符串时如何显示破折号?

<h:outputText value="#{userHandler.user.phoneNumber != null 
? userHandler.user.phoneNumber : '-'}" />

或者

<h:outputText rendered="#{userHandler.user.phoneNumber ne null}"  value="#{userHandler.user.phoneNumber}" /> 
于 2012-06-23T03:19:39.317 回答
5

解决方案是检查是否为空(您也可以检查是否为空)并与渲染属性一起使用。

Empty 可以很好地与 Collections 一起工作(检查空和 null),也可以与 null 一起工作。

例如:

<h:outputText rendered="#{not empty myBean.myData}"  value="..." /> 
于 2012-06-24T07:59:34.130 回答