对 Faces 输入组件添加验证

可以对所有 Faces 输入组件设置验证。例如,通过将“输入日期/时间”组件的最小值设置为 2003/01/01 并将最大值设置为“now”,可以对其设置验证。
在对输入组件添加验证之前:
  1. 创建动态 Web 项目。
  2. 创建支持 JSF 的 JSP 文件。
要对输入组件添加验证:
  1. 在输入组件的“属性”视图中,从列表中选择下列其中一种格式:
    • 字符串 - 指定输入应该采用文本字符串格式。有关对输入字符串组件添加验证的信息,请参阅联机帮助主题对输入字符串组件添加验证
    • 数字 - 指定输入应该采用数字格式。
    • 日期/时间 - 指定输入应该采用日期和/或时间格式。
    • 掩码 - 指定通过有选择地包括或排除某些值对输入进行过滤。
    选择格式后,可以使用“属性”视图中提供的选项进一步配置该格式。
  2. 要在服务器上对此字段中输入的值进行验证,请单击“属性”视图中的验证选项卡:
    1. 如果要求用户输入值,请选择值是必需的
    2. 验证有两个选项:
      • 使用简单验证 - 允许您设置输入的最小字符数和最大字符数。在将输入提交至服务器时,将对其进行验证以确保不超出此范围。约束下拉列表允许您从一组预定义正则表达式中进行选择。缺省值是空白,即不进行约束。您可以使用单击以创建/编辑定制验证代码来定义定制正则表达式。
      • 使用高级验证 - 允许使用 JSF 表达式语法来定义验证。在定义约束时,可以使用标准 Java™ 或 Javascript 正则表达式语法。
    3. 选择在错误消息控件中显示验证错误消息,以便在输入组件验证失败时自动创建用于显示错误消息的“显示错误”组件。
    (可选)选择单击以创建/编辑定制验证代码以切换至“快速编辑”视图,然后创建定制验证代码。
  3. 要在客户机上对此字段中输入的值进行验证,请单击“属性”视图中的行为选项卡:
    1. 选择在浏览器中验证字段值
    2. onblur 操作onfocus 操作选项卡上,对于成功时失败时,为应用 CSS 类字段选择类,然后从运行操作列表中选择操作。
    (可选)单击在“快速编辑”视图中,可以在 onsuccess、onerror、onfocussuccess 和 onfocuserror事件中提供其他行为以创建定制行为代码。
  4. 使用选用板中的按钮 - 命令组件,在页面中添加“提交”按钮。
  5. 保存该页面。
可以通过在服务器上运行该页面来测试验证:在 Page Designer 中右键单击该页面,然后选择在服务器上运行

示例:使用“快速编辑”视图来创建定制验证

以下是对用户输入到 Web 页面上的字段中的值进行定制验证的示例。在此示例中,用户填写用户注册表单并单击提交按钮。在提交注册表单之前,您想要进行验证,以确保密码字段和密码确认字段包括相同的密码。您还想验证密码字段至少有六个字符。遵循下列步骤来创建定制验证:
  1. 创建包含一个注册表单(具有“姓名”和“地址”等字段)和一个提交按钮(commandExButton)的 Faces JSP 文件。
  2. 将两个“隐藏输入”(inputSecret)组件拖至该 Faces JSP 文件。第一个组件是“密码”字段,第二个组件是“密码确认”字段。
  3. 打开第一个“隐藏输入”组件的“属性”视图。在“验证”面板上,选择值是必需的
  4. 最小长度设置为六(6)个字符。
  5. 单击提交按钮。
  6. 切换至提交按钮的“快速编辑”视图(窗口 > 显示视图 > 快速编辑)。
  7. 将以下代码添加至“快速编辑”视图的右窗格:
    String text1Val = (String)getSecret1().getValue();
    String text2Val = (String)getSecret2().getValue();
    		
    System.out.println("text2Val = " + text1Val + " text2Val = " + text2Val);
    		
    if(!text1Val.equals(text2Val)){
    	System.out.println("NOT THE SAME");
    	FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Passwords need to be the same", "Values should be the same");
    	getMessages1().setErrorStyle("color:Red");
    	getFacesContext().addMessage(null, message);
    	return "errorCondition";
    }
    return "successCondition";

    FacesMessage 具有下列构造函数:

    FacesMessage()
    FacesMessage(FacesMessage.Severity, String summary, String detail)
    FacesMessage(String summary)
    FacesMessage(String summary, String detail)
  8. 保存 Faces JSP 文件并在服务器上运行。

反馈