當您設計動態網頁時,可以利用自訂驗證器來驗證您要以其他方式驗證的資料。
自訂驗證器會查看已送出的值,然後對它執行驗證。
比方說,您可以新增自訂驗證器到輸入文字欄位中,使驗證器確定已送出的值包含九個數字。
如果已送出的值不包含九個數字,當頁面呈現時,自訂驗證器會顯示錯誤訊息。
以下這個方法可讓您在 Web 專案中建立自訂驗證器。
- 建立 Web 專案()。
- 建立新的 Faces JSP 頁面()。
- 在「專案瀏覽器」視圖中,開啟 Web 專案的 Java™ 來源資料夾。
- 用滑鼠右鍵按一下 Java 來源資料夾,再按一下。
- 在「新建 Java 套件」對話框,將套件命名為 validator,
並按一下完成。 即建立一個叫作 validator 的新套件,
顯示在 Java 來源資料夾中。
- 用滑鼠右鍵按一下 validator 套件,再按一下。
- 在「新建 Java 類別」對話框中:
- 將類別命名為 MyValidator。
- 按一下新增。
- 在所顯示的「實作的介面選項」對話框中,
在「選擇介面」欄位中輸入 javax.faces.validator.Validator。
- 按一下確定。
- 按一下完成。 MyValidator.java 檔案就會建立在驗證器資料夾中,它包含的程式碼類似下列
Java 程式碼:
package validator;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
public class MyValidator implements Validator {
/* (non-Javadoc)
* @see javax.faces.validator.Validator#validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)
*/
public void validate(FacesContext arg0, UIComponent arg1, Object arg2)
throws ValidatorException {
// TODO 自動產生的方法 Stub
}
public void validate(FacesContext arg0, UIComponent arg1, Object arg2)
throws ValidatorException {
System.out.println("my custom validator");
//TODO: 在這裡新增自訂驗證程式碼。此程式碼將在 JSF 生命週期的驗證階段執行。
//如果發生任何驗證錯誤,您可以擲出異常狀況訊息,
//然後可利用 h:message (或 h:messages) 元件來顯示該訊息。
}
- 在相同專案的 WEB-INF 資料夾中,開啟 faces-config.xml 檔案。 將下列程式碼新增至該檔案:
<validator>
<validator-id>MyValidator<validator-id>
<validator-class>validator.MyValidator<validator-class>
<validator>
- 將輸入文字欄位新增至您在步驟 2 建立的頁面。
- 在頁面的來源模式中,新增驗證器標示作為
inputText 的子項,並將 validatorId 屬性設為 "MyValidator",如下所示:
<h:inputText styleClass="inputText" id="text1"><f:validator validatorId="MyValidator"></f:validator></h:inputText>
- 將「指令 - 按鈕」元件新增至頁面。
- 在伺服器上執行頁面。按一下指令按鈕時,主控台上會顯示 "my
custom validator"。