| 如果标准验证器不能执行所需的验证检查,您也可以轻松地添加自己的验证处理程序。本教程将使用 Sun Java Studio Creator 集成开发环境 (integrated development environment, IDE) 来创建验证处理程序,从而确保在字段中输入的数据是三位数值。 |
|
目录
|
![[spacer]](/im/a.gif) |
 |
设计应用程序
- 创建一个新的 Web 应用程序项目,并将其命名为
CustomValidatorExample。
图 1 显示了将在以下步骤中创建的页。
图 1:页面设计 |
- 从组件面板的“基本”类别中,将一个“文本字段”组件拖放到页面上。
- 在“属性”窗口中,将该“文本字段”组件的
label 属性设置为 Value:,并将 required 属性设置为 True。
label 属性位于“属性”窗口中“外观”类别的下方,required 属性位于“数据”类别的下方。值为 True 表示要求用户在输入字段中输入一个值。一个红色星号出现在 Value 标签的旁边,指示已设置 required 属性。
- 将一个“按钮”组件放在“文本字段”组件的右侧。将按钮的 text 属性更改为
Submit。
- 将一个“消息”组件放在该“文本字段”组件的下方。
- 按住 Ctrl+Shift 组合键,从“消息”组件拖动一条直线到“文本字段”组件。
此时“消息”组件的 text 属性更改为 textField1 的消息摘要。
创建简单的验证处理程序
在本部分中,您将创建一个简单的验证处理程序,用于检查用户的输入,并将其限制为三位数值(例如 107)。
- 右键单击“文本字段”组件,然后选择“编辑事件处理程序”> "validate"。
此操作将打开 Java 编辑器。ValidatorException、FacesContext 和 FacesMessage 类的 import 语句被自动添加到代码中。插入点位于该文本字段的 validate 事件中。第三个参数 value 是将要验证的字符串。
- 输入以下代码(以粗体显示)。
| 代码样例 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 上排队,并在呈现响应过程中显示在页面上。
测试应用程序
- 运行应用程序。
- 输入长度不同的数字型和字符型字符串,以便对应用程序进行测试。另外,验证文本字段中未输入值时是否显示标准验证错误。图 2 显示了用户输入
1988 后的结果。
图 2:定制验证器示例及结果 |
执行更多操作
尝试生成自己的正则表达式以进行验证。请参见 Java 2 Platform, Standard Edition 5.0 的 API 规范中的 正则表达式构造的摘要。
另请参见:
此页的最新修改时间:2006 年 1 月 25 日
|