我有一個帶有ICEfaces組件的窗體的Facelets頁面。 empId
是一個long類型的屬性,必須在bean中檢查是否爲null。它的格式爲String
,我將它轉換爲long類型,使用Long.valueof(empId).longValue();
將它傳遞給DAO以檢查數據庫列。轉換爲long並驗證
這是我們應該這樣做的方式嗎?或者還有其他方法嗎?
我有一個帶有ICEfaces組件的窗體的Facelets頁面。 empId
是一個long類型的屬性,必須在bean中檢查是否爲null。它的格式爲String
,我將它轉換爲long類型,使用Long.valueof(empId).longValue();
將它傳遞給DAO以檢查數據庫列。轉換爲long並驗證
這是我們應該這樣做的方式嗎?或者還有其他方法嗎?
你想通過JSF,而不是使用一個String
特性的Long
屬性執行自動轉換爲Long
/EL(它具有用於標準Number
,Boolean
和Enum
類型即內建轉換)。
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
,但這取決於具體的功能要求,這是不清楚的問題。