快速业务通道

JSF 1.2入门,第2部分 JSF生命周期、转换、检验和阶段监听器 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
件的本地值必须是数字类型的,并可以转换为 long;必须处于最小值、最大 值或这两者指定的范围内。

LengthValidator:类型必须是 string;长度必须处于最小值、最大值或这两者指定的范围内。

在这个示例应用程序中,联系人的年龄可以是任何有效的整数。因为 -2 这样的年龄是没有意义的, 所以需要给这个字段添加某些检验。清单 29 使用 <f:validateLongRange> 进行简单的检验,确 保年龄字段中的数据是有意义的:

清单 29. 使用 <f:validateLongRange> 检验年龄的值是否合理

  <%-- age --%> <h:outputLabel value="Age" for="age" accesskey="age" /> <h:inputText id="age" size="3" value="#{contactController.contact.age}">   <f:validateLongRange minimum="0" maximum="150"/> </h:inputText> <h:message for="age" errorClass="errorClass" />

在检验年龄字段之后,可能希望为名字字段指定长度限制,见清单 30。

清单 30. 确保 firstName 不是太长也不是太短

  <%-- First Name --%> <h:outputLabel value="First Name" for="firstName" accesskey="f" /> <h:inputText id="firstName" label="First Name" required="true" value="#{contactController.contact.firstName}" size="10" >   <f:validateLength minimum="2" maximum="25" /> </h:inputText> <h:message for="firstName" errorClass="errorClass" />

尽管 JSF 内置的检验在许多场景中都是有效的,但是它们的功能有限。在处理电子邮件、电话号码、 URL、日期等数据时,编写自己的检验器可能更好(本节后面会讨论定制的检验器)。还可以使用 Tomahawk、Shale、JSF-Validations 和 Crank 提供的检验器。

应用程序级检验

从概念上说,应用程序级检验实际上是业务逻辑检验。JSF 将表单级或字段级检验与业务逻辑检验分 隔开。应用程序级检验需要在使用模型的托管 bean 方法中添加代码,以确保绑定到模型的数据的质量。 例如,对于购物车来说,可以使用表单级检验确保输入的数量是有效的,但是还需要通过业务逻辑检验检 查用户是否超过了他的信用限额。这是 JSF 中关注点隔离的另一个例子。

假设用户单击一个绑定到动作方法的按钮,这个动作方法在调用应用程序阶段被调用(细节参见前面 的 图 5)。在对模型数据进行任何操作之前(通常在更新模型阶段更新模型数据),可以根据应用程序 的业务逻辑检查输入的数据是否是有效的。

例如,在这个示例应用程序中,用户单击 Update/Add 按钮,这个按钮绑定到应用程序控制器的 persist() 方法。可以在 persist() 方法中添加检验代码,检查系统中是否已经存在当前的 firstName/lastName 组合。如果这个联系人已经存在,那么可以在 FacesContext 中添加一个消息,然 后返回 null(如果在这个动作上应用了导航规则),从而让 JSF 留在当前视图上。

我们再看一下联系人应用程序,这一次在 persist() 动作方法中执行一些应用程序级逻辑,见清单 31 和清单 32。清单 31 给出控制器中的应用程序级检验逻辑:

清单 31. 控制器中的应用程序级检验逻辑

public class ContactController {   public String persist() {     /* Perform the application level validation. */      try {        contact.validate();      } catch (ContactValidationException contactValidationEx

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号