- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Struts In Action 第5章
用ActionForm进行复制
与Ted Husted 和 George Franciscus合著
本章包含
理解ActionForm生命周期
检查ActionForm的职责
讨论ActionForm设计特征
使用ActionForm的最佳实践
组装和报告ActionForm
介绍Scaffold BaseForm
The sweat of hard work is not to be displayed. It is much
more graceful to appear favored by the gods.
—Maxine Hong Kingston,
The Woman Warrior: Memoirs of a Girlhood among Ghosts
吃的是草,挤出的是奶
使用Web应用HTML form提交数据其数据
HTML form 给Web开发人员提出了两个挑战:一是在数据被提交时获取数据数据HTML form。这就意味着,我们必须能够通过传送动态值来针对每次请求改变页面。
HTML 并没有提供一个内建的手段来使用动态页面动态
这里有许多方式为Java Web应用编写动态JavaServer页面Struts 分发包包括了一套JSP标动态 HTML 控标签Struts 标签JavaBeans一起工作。如我们在第一章所见,JavaBean 是一个遵循一定设计规则的简单但是非常强大的对象
不像 HTML 元素, Struts 标签提供控 HTML 标签HTML标记元素。每个JSP 标签属性提供属性vaBean属性返回value 属性。
所以,如果有一个元素象这样:
input name=address/
它可以由这样的Struts JSP 标签
html:input property=address/
标签 address 属性HTML 元素的 value来插入。当浏览器input name=address value=6 Lost Feather Drive/
这里,他实际上是调用 ActionForm的getAddress()方法,返回字符串6 Lost Feather Drive。
注
在某些编程上下文中,词语 “属性(property)”等同于 attribute, field,或者 variable。在这些场合, 属性(property)表达了一个存储地址。JavaBean 属性(property)通常使用字段/域(field)来存储值, 但是 JavaBean “properties”确实说来是可以用来检索值的方法。当我们说一个公共属性public properties, 我们实际上是在说 JavaBean 对象的公共域。我们说的方法则是用来检索和设置值的。有时候,这些值存储于域(field)中。其时候,可能是从几个域中计算出来,或者从其它对象中检索出来。JavaBeans的强大之处在于对象可以控制值的存储方式,以及使他们可以通过mutator 和accessor方法进行公共存取。Struts 控制器, HTTP 参数 JavaBean。大部分来自于HTML 表单的输入都将在传递给业务层之前进行校验。如果一个字段假定是包含数字,我们就得确保它就是数字。如果校验检查失败,我们可以将 JavaBean 回传给页面JSP 标签JavaBean 属性重新组装HTML元素,用户就可以纠正输入,并重新尝试。
JavaBean 都可以和 Struts JSP 标签 Struts使用它自己的JavaBean 子类, 称作 ActionForm。
一旦从HTML表单的输入传递给ActionForm bean,并且属性经过了校验,属性就要作为一个漂亮整齐的JavaBean传递给Action。Struts Action 对象form bean来进行其业务操作,处理错误,并选择相应响应页面Action 对象
ActionForm 的要求
创建ActionForm 并不困难,但是你的类必须符合一些要求:
ActionForm 必须扩展自org.apache.struts.ActionForm。基类 ActionForm 是不能实例化的。
ActionForm 必须为每个应该从请求中收集的HTML控件定义属性 (Struts 1.0 要求每个属性都要 mutator 和accessor。Struts 1.1 则没有如此严格)
ActionForm还可能要符合一些可选的要求:
如果你要求ActionForm 在传递属性到Action之前校验它们,你就必须实现validate方法;
如果想在组装前初始化属性,必须实现 reset , 它在ActionForm 组装前被调用;
下面
文档评论(0)