Struts 学习笔记之ActionForm

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11111

Struts 学习笔记之ActionForm

Struts 学习笔记之ActionForm

Struts 中定义了一些JavaBeans,主要是以ActionForm为父类扩展开来的,如下图:

① org.apache.struts.action包中

public abstract class ActionForm implements Serializable

public class DynaActionForm extends ActionForm implements DynaBean

② org.apache.struts.validator包中

public class ValidatorForm extends ActionForm implements Serializable public class DynaValidatorForm extends DynaActionForm

implements DynaBean, Serializable

③ org.apache.struts.validator包中

public class ValidatorActionForm extends ValidatorForm implements Serializable

public class DynaValidatorActionForm extends DynaValidatorForm

implements DynaBean, Serializable

1 . ActionForm中比较常用的两个方法是reset()和validator():

// 恢复ActionForm属性的默认值,如把boolean型设为true/false,字符串

设为null。

public void reset( ActionMapping mapping, HttpServletRequest request ) { }

// validate 只检查数据格式和语法,不检查数据是否符合业务逻辑。

public ActionErrors validate( ActionMapping mapping, HttpServletRequest request ) { return (null); }

这两个方法的默认实现是不执行任何操作,我们可以重写这两个方法来实现相关逻辑。

注:对于每个request,控制器都会先调用ActionForm的reset()方法,然后表单数据组装到ActionForm中。如ActionForm在request范围内,那么对于每个新的request请求都会创建新的ActionForm实例。新实例创建后,如果它的属性已经被初始化为默认值,那么接着再在reset()方法中把属性设为默认值不是很有必要,这时可以让reset()方法为空。

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

2 .其中,ActionForm需要我们创建一个formbean类继承ActionForm,在ActionForm中可以定义一些property和get/set方法。

ActionForm 的property必须声明然后才可以使用,不过在查询时我们常常需要输入一些查询条件,这些查询条件(property)其实不需要在formbean中声明,这时可以使用Map对象来封装整个查询表单提交的数据,如下:

public class MapForm extends ActionForm {

private Map map = null;

public void setMap(Map map) {

this.map = map;

}

public Map getMap() {

return this.map;

}

// 增加查询条件(property)的get/set方法,并把数据放到Map中

public void setAttribute(String attributeKey, Object attributeValue) {

map.put(attributeKey, attributeValue);

}

public Object getAttribute(String attributeKey) {

Object keyValue = map.get(attributeKey);

return keyValue;

}

}

在页面上可以通过

来获取表单数据,这会调用getAttribute("id")方法。

3 .其中,Dyna开头的动态ActionForm不需要创建具体的ActionForm类,只需通过Struts的配置文件就可以完成ActionForm的全部配置,如:

Dyna ActionForm">

4 .其中,含有validator的ActionForm用来进行表单验证,验证方法有两种。

① 在struts-config.xml中设置action的validate属性为"true"(默认为"true"),

type=".lively.action.UpdateUserAction"

name="userForm"

scope="request"

input="/jsp/updateUser.jsp"

cancellable="true"

validate="true">

并且在相应的formbean中重写其中的validate方法,在validate方法中实现自己的数据验证逻辑。

② 通过validation框架进行验证,这分为两步:

⑴ 在struts-config.xml中配置validation插件,

value="/org/apache/struts/validator/validator-rules .xml,

/WEB-INF/validation.xml" />

⑵ 配置formbean,有下面两种方法:

㈠使自己的formbean类继承含有validator的ActionForm

public class UserForm extends ValidatorForm{

private String userName;

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

erName = userName;

}

}

并配置struts-config.xml文件:

userForm" type="erForm">

㈡使自己的formbean类继承含有validator的Dyna ValidatorForm userForm" type="org.apache.struts.validator.Dyna ValidatorForm">

相关文档
最新文档