创建定制验证器

在设计动态 Web 页面时,可能会想对以其他方式进行验证的数据使用定制验证器。定制验证器查看提交的值然后对它执行验证。例如,可以将定制验证器添加至输入文本字段以便验证器可确保提交的值包含九个数字。如果提交的值不包含九个数字,则定制验证器在页面呈示时显示错误消息。
在创建 Faces JSP 文件前,必须创建支持 Faces 技术的动态 Web 项目。有关更多信息,请参阅开发 Faces(JSF)应用程序
以下是在 Web 项目中创建定制验证器的一种方法。
  1. 创建 JSF 页(单击文件 > 新建 > Web 页面,然后遵循“新建 Web 页面”向导中的指示信息)。有关创建 JSF 页的更多信息,请参阅创建 Faces JSP 文件
  2. 在“项目资源管理器”视图中,右键单击 Web 项目的 Java 资源:src 文件夹并选择新建 >
  3. 新建 Java 包对话框中,将该包命名为 validator,然后单击完成 这将创建名为 validator 的新包,该包将显示在“Java™ 资源:src”文件夹中。
  4. 右键单击名为 validator 的包,然后单击新建 > 。将打开新建 Java 类向导。
  5. 新建 Java 类向导中:
    1. 将类命名为 MyValidator
    2. 单击添加
    3. 在所显示的选择已实现的接口对话框中,在“选择接口”字段中输入 javax.faces.validator.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 Auto-generated method stub
      
      	}
      
      public void validate(FacesContext arg0, UIComponent arg1, Object arg2)
      		throws ValidatorException {
      System.out.println("my custom validator");
      		//TODO: Add your custom validation code here. This code will be execured during the validation
      			//phase of the JSF lifecycle. If any validation errors occur you can throw an exception message
      			//that in turn can be displayed using a h:message (or h:messages) component.
      
      	 }
  6. 在同一个项目的 WEB-INF 文件夹中,打开名为 faces-config.xml 的文件。在“源代码”视图中,将以下代码添加至该文件中 </faces-config> 之前:
    <validator>
    	<validator-id>MyValidator</validator-id>	
    	<validator-class>validator.MyValidator</validator-class>
    </validator>

    保存 faces-config.xml。

  7. 将输入文本字段添加至在步骤 1 中创建的页面。
  8. 在页面的“源代码”视图中,添加该 validator 标记作为 inputText 的子代,然后将 validatorId 属性设置为 MyValidator,如下所示:
    <h:inputText styleClass="inputText" id="text1"><f:validator validatorId="MyValidator"></f:validator></h:inputText>
  9. 在该页面中添加“按钮 - 命令”组件。
  10. 在服务器上运行页面。单击该命令按钮时,定制验证器将显示在控制台中。

反馈