在设计动态 Web 页面时,可能会想对以其它方式进行验证的数据使用定制验证器。定制验证器查看提交的值然后对它执行验证。例如,可以将定制验证器添加至输入文本字段以便验证器可确保提交的值包含九个数字。如果提交的值不包含九个数字,则定制验证器在页面显示时呈示错误消息。
以下是在 Web 项目中创建定制验证器的一种方法。
- 创建 Web 项目()。
- 创建新的 Faces JSP 页()。
- 在“项目资源管理器”视图中,打开 Web 项目的 Java™ Source 文件夹。
- 右键单击 Java Source 文件夹,然后单击。
- 在“新建 Java 包”对话框中,将包命名为
validator 并单击完成。 这就创建了名为 validator 的新包并且它显示在 Java Source 文件夹中。
- 右键单击名为 validator 的包,然后单击。
- 在“新建 Java 类”对话框中:
- 将类命名为 MyValidator。
- 单击添加。
- 在显示的“已实现的接口选择”对话框中,在“选择接口”字段中输入
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.
}
- 在同一个项目的 WEB-INF 文件夹中,打开名为 faces-config.xml 的文件。 将以下代码添加至该文件:
<validator>
<validator-id>MyValidator<validator-id>
<validator-class>validator.MyValidator<validator-class>
<validator>
- 将输入文本字段添加至在步骤 2 中创建的页面。
- 在页面的“源代码”方式下,添加作为 inputText 的子代的 validator 标记并将
validatorId 属性设置为“MyValidator”,如下所示:
<h:inputText styleClass="inputText" id="text1"><f:validator validatorId="MyValidator"></f:validator></h:inputText>
- 将“命令 - 按钮”组件添加至页面。
- 在服务器上运行页面。当单击命令按钮时,“my
custom validator”就会显示在控制台上。