2012-10-22 86 views
1

我有一個帶有ICEfaces組件的窗體的Facelets頁面。 empId是一個long類型的屬性,必須在bean中檢查是否爲null。它的格式爲String,我將它轉換爲long類型,使用Long.valueof(empId).longValue();將它傳遞給DAO以檢查數據庫列。轉換爲long並驗證

這是我們應該這樣做的方式嗎?或者還有其他方法嗎?

回答

1

你想通過JSF,而不是使用一個String特性的Long屬性執行自動轉換爲Long/EL(它具有用於標準NumberBooleanEnum類型即內建轉換)。

private Long empId; 

<h:inputText value="#{bean.empId}" /> 

你想使用required屬性來驗證所需的輸入。

<h:inputText value="#{bean.empId}" required="true" /> 

任何轉換或驗證錯誤消息都可以使用<h:message>顯示。

<h:inputText id="empId" value="#{bean.empId}" required="true" /> 
<h:message for="empId" /> 

您可以根據需要更改轉換和所需的信息如下:

<h:inputText id="empId" value="#{bean.empId}" required="true" 
    requiredMessage="Please enter employee ID." 
    converterMessage="Please enter digits only." /> 
<h:message for="empId" /> 

這樣你就不需要在bean的操作方法執行任何轉換/驗證,這將是無論如何,它是錯誤的地方。您應該使用JSF內置轉換器或定製Converter進行轉換,並使用JSF內置驗證器或定製Validator進行驗證。 backing bean屬性應該已經擁有正確的類型,並且backing bean操作方法不應該進行任何轉換/驗證。

我只想知道,DAO方法調用來檢查列不能更好地處理自定義Validator,但這取決於具體的功能要求,這是不清楚的問題。