快速业务通道

怀疑论者的JSF - JSF转换与验证 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
法来确保当前用户已经不在系统中。

图 11 描绘了这个过程。

图 11. 应用程序级验证

怀疑论者的JSF - JSF转换与验证 - 编程入门网

怀疑论者的JSF - JSF转换与验证(8)

时间:2011-03-13 IBM Rick Hightower

注意在 register() 方法中,消息是如何以 ${formId}:${fieldId} 的形式添加到 FacesContext 中的。图 12 显示了消息与组件 id 之间的关系。

图 12. 验证消息

怀疑论者的JSF - JSF转换与验证 - 编程入门网

应用程序级验证的优缺点

应用级验证非常直观并且容易实现。不过,这种形式的验证是在其他形式的验证(标准、自定义、组件)之后发生的。

应用程序级验证的优点如下:

容易实现。

不需要单独的类(自定义验证器)。

不需要页编写者指定验证器。

应用程序级验证的缺点如下:

在其他形式的验证(标准、自定义)之后发生。

验证逻辑局限于 backing bean 方法,使得重用性很有限。

在大型应用程序和/或团队环境中可能难于管理。

最终,应用程序级验证只应该用于那些需要业务逻辑验证的环境中。

自定义验证组件

对于标准 JSF 验证器不支持的数据类型,则需要建立自己的自定义验证组件,其中包括电子邮件地址和邮政编码。如果需要明确控制显示给最终用户的消息,那么还需要建立自己的验证器。在 JSF 中,可以创建可在整个 Web 应用程序中重复使用的可插入验证组件。

创建自定义验证器的步骤如下,我们将一步步地分析:

创建一个实现了 Validator 接口的类 (javax.faces.validator.Validator)。

实现 validate 方法。

在 faces-confix.xml 文件中注册自定义验证。

在 JSP 页中使用 <f:validator/> 标签。

下面是创建自定义验证器的分步示例代码。

第 1:实现 Validator 接口

第一步是实现 Validator 接口。

import javax.faces.validator.Validator; import javax.faces.validator.ValidatorException; ... public class ZipCodeValidator implements Validator{   private boolean plus4Required;   private boolean plus4Optional;   /** Accepts zip codes like 85710 */   private static final String ZIP_REGEX = "[0-9]{5}";   /** Accepts zip code plus 4 extensions like "-1119" or " 1119" */   private static final String PLUS4_REQUIRED_REGEX = "[ |-]{1}[0-9]{4}";   /** Optionally accepts a plus 4 */   private static final String PLUS4_OPTIONAL_REGEX = "([ |-]{1}[0-9]{4})?";   ... }

怀疑论者的JSF - JSF转换与验证(9)

时间:2011-03-13 IBM Rick Hightower

第 2 步:实现验证方法

接下来,需要实现 validate 方法。

public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {    /* Create the correct mask */    Pattern mask = null;    /* more on this method later */    initProps(component);    if (plus4Required){       mask = Pattern.compile(ZIP_REGEX + PLUS4_REQUIRED_REGEX);    } else if (plus4Optional){       mask = Pattern.compile(ZIP_REGEX + PLUS4_OPTIONAL_REGEX);    } else if (plus4Required && plus4Optional){       throw new IllegalStateException("Plus 4 is either optional or required");    }    else {       mask = Pattern.compile(ZIP_REGEX);    }       /* Get the string value of the current field */    String zipField = (String)value;       /* Check to see if the value is a zip code */   Matcher matcher = mask.matcher(zipField);   if (!matcher

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号