2012-06-23 13 views
3

我正在開發一個帶有JPA(EclipseLink 2.0)和Primefaces的JSF應用程序。 我想知道是否有任何方法來避免零點異常時,EL調用空對象的屬性。我描述了這種情況。 我有比爾班。 Bill對象可能沒有或多個BillItem對象。每個BillItem對象都有像Make,Country,Manufacturer等對象。我在一個JSF文件中顯示了一個賬單的幾個屬性。在JSF中避免el中的空點異常

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

但是,如果沒有選擇帳單,或者沒有選定帳單的帳單項目,則在el中訪問的屬性爲空。我可以通過爲每個賬單創建新的對象來避免這種情況,例如,爲新的賬單項目創建新的對象等,或者通過在控制器本身中爲所有屬性創建新的屬性。但是,這是一個非常漫長的過程,感覺就像是基本的。

有沒有什麼好的做法來避免JSF中el中的這種空點異常?

回答

6

我得到了解決方案。在每個el之前,我可以檢查null。

JSF: h:outputText; how to show a dash when the value is empty string?

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

或者

<h:outputText rendered="#{userHandler.user.phoneNumber ne null}" value="#{userHandler.user.phoneNumber}" /> 
5

的解決方案是檢查空(你也可以檢查空),並與渲染屬性使用。

空可以很好地處理集合(檢查空和空),也可以爲空。

例如:

<h:outputText rendered="#{not empty myBean.myData}" value="..." />