服务器端 JavaServer Faces 验证器:设计详细信息

此解决方案通过 java.netbpcatalog 项目下的 validators 应用程序进行演示。

这是一个应用程序,它利用 JavaServer[TM] Faces 技术展示了用于验证(客户端 JavaScript[TM] 验证和服务器端 JavaServer Faces 验证)的多个解决方案。

客户端验证

index.jsp 文件还包含用于验证颜色字段内容的 JavaScript。如果客户端浏览器不支持 JavaScript 或关闭了 JavaScript,则无法执行客户端验证。如果验证失败,则浏览器不会将表单传送至 Web 应用程序,这样便可减少耗时和耗资源的双向操作。应当始终将应用程序设计为执行服务器端验证,无论是否已执行客户端验证。

服务器端验证

该应用程序包含两个 JavaServer Pages:一个是 index.jsp 文件,另一个是 response.jsp 文件。index.jsp 页在一个页面中包含了所有的 JavaServer Faces 代码示例。如果页面中的数据有效,则会将请求转发到 response.jsp 页;如果验证失败,则会返回到 index.jsp 页,此时该页将显示错误消息。

有一个名为 ValidatorBean 的托管 Bean,它包含页中使用的验证代码。下列 index.jsp 页中的 JavaServer Faces 代码使用方法绑定表达式来调用 ValidatorBean 上的 validate 方法:
    <h:inputText id="smallNumber" value="#{ValidatorBean.smallNumber}"
validator="{JSFValidator.validate}"/>

处理 JavaServer Faces 页时,则会调用以下来自 ValidatorBean 的代码。

 public void validate(FacesContext context,
UIComponent component,
Object value) throws ValidatorException {

if ((context == null) || (component == null)) {
throw new NullPointerException();
}
if (value != null) {
if (((String)value).equals("blueprints")) {
throw new ValidatorException(new FacesMessage("blueprints is invalid"));
}
}
}

© Sun Microsystems 2005。Java BluePrints Solutions Catalog 中的所有内容受版权保护,未经 Sun Microsystems 的明确书面许可,不得在其他产品中发布。