在JSF中避免el中的空点异常

Bud*_*tne 3 jsf el

我正在使用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的这个零点异常?

Bud*_*tne 5

我得到了解决方案.在每个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)


Bac*_*chT 5

解决方案是检查null(您也可以检查为空)并使用render属性.

Empty可以与Collections一起使用(检查空和null),也可以使用null.

例如:

<h:outputText rendered="#{not empty myBean.myData}"  value="..." /> 
Run Code Online (Sandbox Code Playgroud)