» 搜索提示 
 
添加自己的验证处理程序
2006 年 1 月 [修订号:V2-3]  
如果标准验证器不能执行所需的验证检查,您也可以轻松地添加自己的验证处理程序。本教程将使用 Sun Java Studio Creator 集成开发环境 (integrated development environment, IDE) 来创建验证处理程序,从而确保在字段中输入的数据是三位数值。
 
目录
 
设计应用程序
创建简单的验证处理程序
测试应用程序
执行更多操作
[spacer] 此页上的内容适用于 Sun Java Studio Creator 2
 

设计应用程序

 
  1. 创建一个新的 Web 应用程序项目,并将其命名为 CustomValidatorExample

    图 1 显示了将在以下步骤中创建的页。

    图 1:页面设计
    图 1:页面设计
     
  2. 从组件面板的“基本”类别中,将一个“文本字段”组件拖放到页面上。

  3. 在“属性”窗口中,将该“文本字段”组件的 label 属性设置为 Value:,并将 required 属性设置为 True

    label 属性位于“属性”窗口中“外观”类别的下方,required 属性位于“数据”类别的下方。值为 True 表示要求用户在输入字段中输入一个值。一个红色星号出现在 Value 标签的旁边,指示已设置 required 属性。

  4. 将一个“按钮”组件放在“文本字段”组件的右侧。将按钮的 text 属性更改为 Submit

  5. 将一个“消息”组件放在该“文本字段”组件的下方。

  6. 按住 Ctrl+Shift 组合键,从“消息”组件拖动一条直线到“文本字段”组件。

    此时“消息”组件的 text 属性更改为 textField1 的消息摘要
 

创建简单的验证处理程序

 
在本部分中,您将创建一个简单的验证处理程序,用于检查用户的输入,并将其限制为三位数值(例如 107)。
  1. 右键单击“文本字段”组件,然后选择“编辑事件处理程序”> "validate"。

    此操作将打开 Java 编辑器。ValidatorExceptionFacesContextFacesMessage 类的 import 语句被自动添加到代码中。插入点位于该文本字段的 validate 事件中。第三个参数 value 是将要验证的字符串。

  2. 输入以下代码(以粗体显示)。

    代码样例 1:定制验证器代码
    public void textField1_validate(FacesContext context, UIComponent component, Object value) {
    	String s = String.valueOf(value);
    	if (!s.matches("\\d\\d\\d")){
    		throw new ValidatorException(new FacesMessage
    		("Not a three-digit number."));
    	}
    }
    
     

    字符串 s 中的 matches 方法使用正则表达式来指定字符串可以接受的合法值。\d 代表 0-9 之间的数字。字符串文字中的字符 "\" 对于 Java 解析器具有特殊的含义。指定额外的 "\" 以将第二个 "\" 转义,从而确保它在通过解析器传递到模式解释程序时保持不变。因此,表达式 \d\d\d 必须是介于 000 到 999 之间的任何一个三位数值。

    如果字符串与正则表达式不匹配,将会向 ValidatorException 构造函数传递一条消息。此时,该消息将在 FacesMessage 上排队,并在呈现响应过程中显示在页面上。
 

测试应用程序

 
  1. 运行应用程序。

  2. 输入长度不同的数字型和字符型字符串,以便对应用程序进行测试。另外,验证文本字段中未输入值时是否显示标准验证错误。图 2 显示了用户输入 1988 后的结果。

    图 2:定制验证器示例及结果
    图 2:定制验证器示例及结果
     

执行更多操作

 
尝试生成自己的正则表达式以进行验证。请参见 Java 2 Platform, Standard Edition 5.0 的 API 规范中的正则表达式构造的摘要
 
另请参见


 
此页的最新修改时间:2006 年 1 月 25 日