使用ActionForm html form action

3.1 使用ActionForm

ActionFormBean有两种存在范围:request和session。如果ActionForm存在于request范围,它仅在当前的请求/响应生命周期中有效。在请求从一个Web组件转发到另一个Web组件的过程中,ActionForm实例一直有效。当服务器把响应结果返回给客户,ActionForm实例及其包含的数据就会被销毁。如果ActionForm存在于session范围,同一个ActionForm实例在整个HTTP会话中有效。

当控制器接受到请求时,如果请求访问的Web组件为Action,并且为这个Action配置了和ActionForm的映射,控制器将从request或session范围中取出ActionForm实例,如果该实例不存在,就会自动创建一个新的实例。当控制器接受到一个新的请求时,ActionForm的生命周期如下:

· 控制器接收到请求

·从request或session范围中取出ActionForm实例,如果该实例不存在,就自动创建一个新的实例。

· 调用ActionForm的reset()方法

使用ActionForm html form action

·把ActionForm实例保存在request或session范围中

·把用户输入的表单数据组装到ActionForm中

·如果<action>的validate属性为true,则调用ActionForm的validate()方法。

· (1)如果存在验证错误,把请求转发给<action>的input属性指定的Web组件,ActionForm实例依然保持在request或session范围内。

(2)如果无验证错误,调用Action的execute()方法,把ActionForm实例传递给execute()方法。

·把请求转发给其他Web组件,ActionForm实例依然保存在request或session范围内。

3.2创建ActionForm

Struts框架中定义的ActionForm类时抽象的,必需在应用中创建它的子类,来捕获具体的HTML表单数据,ActionFormBean中的属性和HTML表单中的字段一一对应。

1 validate()方法

如果Struts的配置文件满足以下两个条件,Struts控制器就会调用ActionForm的validate()方法:

·为ActionForm配置了Action映射,即<form-bean>元素的name属性和<action>元素的name属性匹配。

·<action>元素的validate属性为true。

在ActionForm基类中定义的validate()方法直接返回null,如果创建了扩展ActionForm基类的子类,那么应该在子类中覆盖validate()方法。

validate()方法主要负责检查数据的格式和语法,而不负责检查数据是否符合业务逻辑。

2 reset()方法

不管ActionFormj存在于哪个范围内,对于每个请求,控制器都会先调用ActionForm的reset()方法,然后再把用户输入的表单数据组装到ActionForm中。reset()方法用于恢复ActionForm的属性的默认值,例如把boolean类型属性设为true或false,把字符串属性设为null或某个初始值。

如果ActionForm在request范围内,那么对于每个新的请求都会创建新的ActionForm实例。当新的实例创建后,如果它的属性已经被初始化为默认值,那么接着再在reset()方法中把属性设为默认值不是很有必要,因此在这种情况下,可以让reset()方法为空。

对于session范围内的ActionForm,同一ActionForm实例会被多个请求共享,reset()方法在这种情况下极为有用。

3.3配置ActionForm

Struts配置文件的<form-beans>元素用来配置所有的ActionFormBean。<form-beans>元素可以包含多个<form-bean>子元素,它代表单个的ActionFormBean。

同一个ActionForm可以和多个Action映射。在<action>元素中,name和scope属性分别指定ActionForm的名字和范围,validate属性指定是否执行表单验证。

3.4 访问ActionForm

ActionForm可以被JSP、Struts标签、Action和其他Web组件访问。访问ActionForm大致有以下一些方法:

1 使用StrutsHTML标签库

StrutsHTML标签库提供了一组和ActionForm密切关联的标签,<html:form>标签生成HTML表单,它包括<html:text>、<html:select>、<html:option>、<html:radio>和<html:submit>等子标签,这些子标签构成HTML表单的字段或按钮。<html:form>标签能和ActionForm交互,读取ActionForm的属性值,把他们赋值给表单中对应的字段。

2从request或session范围内取出ActionForm实例

Struts框架把ActionForm实例保存在HttpServletRequest或HttpSession中,保存时采用的属性key为<form-bean>元素的name属性。因此,如果ActionForm在request范围内,则可以调用HttpServletRequest的getAttribute()方法读取ActionForm实例。如果ActionForm在session范围内,则可以调用HttpSession的getAttribute()方法读取ActionForm实例。

3在Action类的execute()方法中直接访问ActionForm

如果配置了ActionForm的Action的映射,Struts框架就会把ActionForm作为参数传递给Action的execute()方法,因此在Action类的execute()方法中可以读取或设置ActionForm属性。

  

爱华网本文地址 » http://www.aihuau.com/a/25101016/294052.html

更多阅读

如何在html中调用js代码 html5如何调用js文件

如何在html中调用js代码——简介js代码即为javascript代码,可直接在客户端解释执行,在html中调用js代码的方法主要有两种:一、将javascript直接写在html文件中,然后在html中调用js函数等;二、将js代码写一个文件中,然后在html中引用该文件

HTML实体符号代码速查表 html特殊符号代码

HTML实体符号被用作实现保留字符(reservedcharacters)或者表达键盘无法输入的一些常用字符。在大多数浏览器中默认的字符集为ISO-8859-1。HTML实体符号使我们在网页设计中经常用到的,下面做了整理,以备速查。HTML实体符号代码速查表(提

ASP如何获取HTML表单提交信息 asp防止表单重复提交

在ASP中,有两个很常用的集合,一个是Request.QueryString,另一个是Request.Form。这两个集合可以获取HTML表单提交的信息。Request.QueryStringHTML 表单中的method有两种,一种是get,另外一种是post。当HTML表单的method="get" 时,可以用

声明:《使用ActionForm html form action》为网友彼时流年若水分享!如侵犯到您的合法权益请联系我们删除