- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JSF的验证讲述
2007-08-17 10:29
见:/developerworks/cn/java/j-jsf3/#main
JSF 验证
如前所述,JSF 验证可以确保应用程序数据包含预期的内容,例如:
java.util.Date 为 MM/yyyy 格式。
Float 在 1.0 和 100.0 之间。
在 JSF 中有 4 种验证:
自带验证组件。
应用程序级验证。
自定义验证组件(它实现了 Validator 接口)。
在 backing bean 中的验证方法(内联)。
我们将在下面的讨论中介绍并展示每一种形式。
JSF 验证生命周期和组件
图 9 显示了用户注册表单中名字字段的生命周期案例分析。代码引用被有意解释为伪代码(pseudo-code)。
图 9. JSF 生命周期中的验证
下面是 JSF 提供的一组标准验证组件:
DoubleRangeValidator:组件的本地值必须为数字类型,必须在由最小和/或最大值所指定的范围内。
LongRangeValidator:组件的本地值必须为数字类型,并且可以转换为长整型,必须在由最小和/或最大值所指定的范围内。
LengthValidator:类型必须为字符串,长度必须在由最小和/或最大值所指定的范围内。
HYPERLINK /developerworks/cn/java/j-jsf3/ \l main 回页首
标准验证
在我们的示例应用程序中,用户的年龄可以是任意有效的整数(byte、short、int)。因为将年龄设置为(比如说)-2 是无意义的,所以可能要对这个字段添加一些验证。下面是一些简单的验证代码,用以确保年龄字段中的数据模型完整性:
h:inputText id=age value=#{UserRegistration.user.age}
?????????? f:validateLongRange maximum=150
?????????????????????????????????? minimum=0/
/h:inputText
完成年龄字段后,可能希望指定对名字字段的长度加以限制。可以像这样编写这个验证:
h:inputText id=firstName
???????????????? value=#{UserRegistration.user.firstName}
f:validateLength minimum=2
maximum=25 /
/h:inputText
图 10 显示了由上面标准验证示例所生成的默认详细验证消息。
图 10. 标准验证错误消息
尽管 JSF 自带的验证在许多情况下都可以满足,但是它有一些局限性。在处理电子邮件验证、电话号码、URL、日期等数据时,有时编写自己的验证器会更好一些,不过我们将在稍后对此进行讨论。
HYPERLINK /developerworks/cn/java/j-jsf3/ \l main 回页首
应用程序级验证
在概念上,应用程序级验证实际上是业务逻辑验证。JSF 将表单和/或字段级验证与业务逻辑验证分离开。应用程序级验证主要需要在 backing bean 中添加代码,用这个模型确定绑定到模型中的数据是否合格。对于购物车,表单级验证可以验证输入的数量是否有效,但是需要使用业务逻辑验证检查用户是否超出了他或者她的信用额度。这是在 JSF 中分离关注点的另一个例子。
例如,假定用户单击了绑定到某个操作方法的按钮,那么就会在调用应用程序阶段调用这个方法(有关的细节,请参见上面的 HYPERLINK /developerworks/cn/java/j-jsf3/ \l figure1 图 1)。假定在更新模型阶段进行了更新,那么在对模型数据执行任何操纵之前,可以添加一些验证代码,根据应用程序的业务规则检查输入的数据是否有效。
例如,在这个示例应用程序中,用户单击了 Register 按钮,这个按钮被绑定到应用程序控制器的 register() 方法。我们可以在 register() 方法中添加验证代码,以确定名字字段是否为 null。如果该字段为 null,那么还可以在 FacesContext 中添加一条消息,指示相关组件返回到当前页。
其实它现在并不是业务规则逻辑的一个好例子。更好的例子是检查用户是否超出了她或者她的信用额度。在该例中,不是检查字段是否为空,我们可以调用模型对象的方法来确保当前用户已经不在系统中。
图 11 描绘了这个过程。
图 11. 应用程序级验证
注意在 register() 方法中,消息是如何以 ${formId}:${fieldId} 的形式添加到 FacesCon
您可能关注的文档
- itss工程师试卷及答案讲述.doc
- iTV装维规范和各场景解决(2016年)讲述.pptx
- iphone6主板彩图及阐述讲述.doc
- IT支撑系统-讲义及2份答卷讲述.docx
- ISO9001:2008培训教材讲述.pptx
- IT行业销售工作总结讲述.pptx
- IT软件项目计划管理2讲述.pptx
- ITSS宣贯培训讲述.pptx
- ITMS在网络中的位置和作用讲述.docx
- j2ee架构讲述.pptx
- 2025年昆明市官渡区关上街道城镇公益性岗位招聘考前自测高频考点模拟试题参考答案详解.docx
- 2025本溪市第一中学面向高等院校应届毕业生校园招聘教师考前自测高频考点模拟试题及参考答案详解一套.docx
- 2025广东韶关市乐昌市人民政府办公室招聘1人模拟试卷带答案详解.docx
- 2025安徽师范大学招聘51人模拟试卷及完整答案详解1套.docx
- 2025年黑龙江中医药大学校本部上半年招聘工作人员(32人)考前自测高频考点模拟试题及完整答案详解1.docx
- 2025广西梧州职业学院第一批招聘事业单位实名制人员71人模拟试卷及答案详解1套.docx
- 2025年绵阳市涪城区丰谷镇人民政府招聘社区专职网格员考前自测高频考点模拟试题及答案详解1套.docx
- 2025年遂宁市蓬溪县教育局关于招聘省级公费师范毕业生考前自测高频考点模拟试题附答案详解.docx
- 2025广西河池市罗城仫佬族自治县城市管理执法局招聘3人考前自测高频考点模拟试题及答案详解1套.docx
- 2025河南济源职业技术学院高层次人才引进20人模拟试卷含答案详解.docx
最近下载
- GB∕T 37903-2019 数控压力机可靠性评定方法.pdf
- SL 274-2020 碾压式土石坝设计规范.docx
- 《植物生产与环境》课程标准.pdf VIP
- 《植物生产与环境》课程标准.pdf
- bosch博世 GBH 5-38 X GBH 5-38 D 使用说明书.pdf
- 最新版入团志愿书模板.pdf
- 职业技术学院园林技术专业《植物生产环境》课程标准 .pdf VIP
- 国内某600MW机组双烟道直流炉省煤器旁路特性研究.pdf VIP
- 《中医基础理论》课件——津液的代谢和生理功能.pptx VIP
- 8 推翻帝制 民族觉醒 第一课时说课稿 -2023-2024学年道德与法治五年级下册统编版.docx
文档评论(0)