可以对所有 Faces 输入组件添加高级验证功能部件。例如,可以通过将“输入 - 日期/时间”组件的最小值设置为
2003/01/01 并将其最大值设置为“现在”来对该组件设置验证。
以下是对“输入”组件的客户机和服务器验证的基本步骤。
- 创建 Faces JSP 页。
- 将“输入”组件拖至 Faces JSP 文件。
- 在输入组件的“属性”视图中,选择“格式”列表中的“字符串”、“数字”、“日期/时间”或“掩码”。
- 在同样的“属性”视图的验证选项卡上,在提交输入时可以对服务器设置验证属性:
- 如果用户必须在此“输入”字段中输入值,则选择值是必需的。
- 输入最小值和最大值。对于“输入字符串”和“输入掩码”组件,输入允许的最小字符数和最大字符数。对于“输入 - 日期/时间”组件,输入允许的最早(最小值)日期/时间和允许的最迟(最大值)日期/时间。还可以输入“now”作为值。对于“输入数字”组件,输入允许的最低(最小值)数字和允许的最高(最大值)数字。
- 选择在错误消息控件中显示验证错误消息以创建“显示错误”组件,该组件将被绑定至此“输入”组件,如果验证失败,可以显示错误消息。“显示错误”组件是在紧挨着“输入”组件的页面上创建的。
- 如果具有“输入字符串”组件,则可以从菜单中选择约束。选项包括:“无约束”、“仅字母字符”和“仅数字”。“无约束”是缺省值,允许使用字母数字字符。
可以在“快速编辑”视图中的“值已更改事件”中提供其它验证。单击单击以创建/编辑定制验证代码旁边的按钮以切换至“快速编辑”视图。注意,其它输入组件也有类似的验证标记。
- 在行为选项卡上,可以对浏览器设置输入行为。注意,“行为”选项卡上的选项视输入组件类型的不同而有所不同。
- 设置验证成功(成功时)或验证失败(失败时)之后要使用的样式表。单击应用 CSS 类旁边的浏览按钮以搜索样式表。例如,您可能希望这样:如果验证成功,则文本是黑色的,如果验证失败,则文本是红色的。在运行操作字段中,可以选择如果验证成功要执行的操作以及如果验证失败要执行的操作。选项是一样的:禁用字段、启用字段和选择字段。
- 可以通过单击“快速编辑”视图来在“快速编辑”视图的成功时和错误时事件中设置其它的操作。
- 将“提交”按钮添加至页面。
- 保存 Faces JSP 页并在服务器上运行它。
通过提交没有显示值的页来测试验证。您所创建的验证应可运行,并且应显示您所创建的任何错误消息。
示例:使用“快速编辑”视图来执行定制验证
以下是对用户输入到
Web 页面上的字段中的值进行定制验证的示例。在此示例中,用户填写用户注册表单并单击
提交按钮。在提交注册表单之前,您想要进行验证,以确保密码字段和密码确认字段包括相同的密码。您还想验证密码字段至少有六个字符。遵循下列步骤来创建定制验证:
- 创建包含一个注册表单(具有“姓名”和“地址”等字段)和一个提交按钮(commandExButton)的 Faces JSP 文件。
- 将两个“隐藏输入”(inputSecret)组件拖至该 Faces JSP 文件。第一个组件是“密码”字段,第二个组件是“密码确认”字段。
- 打开第一个“隐藏输入”组件的“属性”视图。在“验证”面板上,选择值是必需的。
- 将最小长度设置为六(6)个字符。
- 单击提交按钮。
- 切换至提交按钮的“快速编辑”视图()。
- 将以下代码添加至“快速编辑”视图的右窗格:
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)
- 保存 Faces JSP 文件并在服务器上运行它。