- 浏览: 1341743 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (453)
- Struts2 (4)
- Struts1 (16)
- Spring (9)
- Hibernate (5)
- AJAX (16)
- MS Server (9)
- Oracle (35)
- 测试技术 (5)
- 其他 (37)
- JSF (1)
- EJB (5)
- ASP.NET (9)
- iBATIS (5)
- Struts Spring Hibernate (2)
- HTML (12)
- Eclipse使用 (5)
- 设计模式 (5)
- JSP (32)
- 正则表达式 (2)
- 服务器 (12)
- Java基础 (48)
- MySQL (4)
- 面试 (22)
- UML (1)
- 数据结构 (3)
- Ant (2)
- 规范 (4)
- JavaScript (29)
- 软件使用及技巧 (25)
- PHP (1)
- DWR (3)
- FreeMarker (1)
- ExtJs (17)
- JFreeChart (9)
- Reports (2)
- JavaException (1)
- Java Mail (1)
- Flex (9)
- 异常 (12)
- Log4j (2)
- WebService (1)
- jQuery (1)
- Sybase (2)
- myeclipse_plugin (2)
- Linux (5)
- jbpm (2)
- SCM (1)
- mongoDB (1)
最新评论
-
lihua2008love:
<typeAlias alias="User& ...
IBATIS简单操作 -
lihua2008love:
...
关于项目框架设计的一点学习 -
c_jinglin:
我使用<OBJECT CLASSID="cls ...
这就是个静态页面通过js控制mscomm对某com设备进行访问的例子. -
zlbjava:
赞,用了还不错
java获取请求的ip地址,并解析ip所属地区 -
完美天龙:
cs842813290 写道楼主,我明白的地方:在链表已有N个 ...
JAVA实现双向链表
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的全部配置,如:
DynaActionForm">
4 . 其中,含有validator的ActionForm用来进行表单验证,验证方法有两种。
① 在struts-config.xml中设置action的validate属性为"true"(默认为"true"),
type="com.cn.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) {
this.userName = userName;
}
}
并配置struts-config.xml文件:
userForm" type="com.cn.lively.formbean.UserForm">
㈡ 使自己的formbean类继承含有validator的DynaValidatorForm
userForm" type="org.apache.struts.validator.DynaValidatorForm">
⑶ 配置validation.xml文件:
userForm">
注: 注意 validation.xml文件中的userForm是struts-config.xml文件中formbean的名字。
关于arg的几个属性如下:
bundle :指定资源文件名,如不指定,则从默认资源文件中读取
key :从资源文件 ActionResources.properties 中得到的值
resource :key所指定的信息是否来自外部的资源文件,默认为true。如果为true,则代表key为buddle属性所指定的资源文件中的key。
position ,这个arg中的值用来替换信息中的哪一部分, 需要替换的部分以{n}标志。
5 . 关于ValidatorForm/DynaValidatorForm与ValidatorActionForm/DynaValidatorActionForm之间的区别
对于一个actionform,可以被多个action所使用,而每个action可能需要的验证字段都不一样,而validation.xml中配置的验证方式(如
)是对这个formbean进行的.
① 如果需要针对每个action来验证,则必须使formbean继承ValidatorActionForm(或者直接配置DynaValidatorActionForm)。如下两种方法:
㈠ 使自己的formbean类继承含有validator的ActionForm
public class UserForm extends ValidatorActionForm{
……
}
并配置struts-config.xml文件:
userForm" type="com.cn.lively.formbean.UserForm">
/createUser"
type="com.cn.lively.action.CreateUserAction"
name="userForm"/>
/updateUser"
type="com.cn.lively.action.UpdateUserAction"
name="userForm"/>
㈡ 使自己的formbean类继承含有validator的DynaValidatorActionForm
userForm" type="org.apache.struts.validator.DynaValidatorActionForm">
/createUser"
type="com.cn.lively.action.CreateUserAction"
name="userForm"/>
/updateUser"
type="com.cn.lively.action.UpdateUserAction"
name="userForm"/>
② 配置validation.xml文件:
/createUser">
/updateUser">
position="1" />
maxlength
10
注: 注意validation.xml文件中的/createUser和/updateUser是struts-config.xml文件中action的path路径。
如果我们查看struts源码,可以很清楚的看到ValidatorForm/DynaValidatorForm与ValidatorActionForm/DynaValidatorActionForm之间的区别
ValidatorForm 中的方法
* @return validation key - the form element's name in this case
public String getValidationKey(ActionMapping mapping,
HttpServletRequest request) {
return mapping.getAttribute(); // 返回formbean的名字
}
发表评论
-
项目的热部署
2008-05-21 16:13 1336<Connector port=&q ... -
一个帐号同一时间只能一个人登录
2008-05-19 21:43 2256对于一个帐号在同一时间只能一个人登录,可以通过下面的方法实现: ... -
Struts 源码学习之ActionServlet (四)
2008-05-19 21:21 1607Ⅳ /* 循环struts配置文件(用",&quo ... -
Struts 源码学习之ActionServlet (三)
2008-05-19 21:20 2607④ 调用 initChain(); 读取web.xml中命令链 ... -
Struts 源码学习之ActionServlet ( 二)
2008-05-19 20:49 1667③ 调用 initServlet(); 从web.xml中加载 ... -
Struts 源码学习之ActionServlet ( 一)
2008-05-19 20:31 2530Struts 源码最新版本为 struts-1.3.8-src ... -
struts 学习笔记之MVC模式
2008-05-19 20:22 1744struts 中的MVC架构如下: View ... -
Struts框架初始化流程
2008-05-19 11:38 1551重新看了一下孙卫琴老师的《精通Struts》,总结了一下Str ... -
RequestProcessor类的process()方法执行流程
2008-05-19 11:37 1865当ActionServlet实例接收到 ... -
Struts 基本工作流程
2008-05-17 15:55 1636在 Struts 對 MVC / Model 2 的實現方式中 ... -
struts工作原理的解释
2008-05-15 22:40 1730Struts 使用 Model 2 架构。Struts 的Ac ... -
LookupDispatchAction使用方法
2008-05-15 22:30 2555名词解释: LookupDispatchAction继承 ... -
Struts 1.1,1.2中DispatchAction的用法详解
2008-05-15 22:26 5398名称解释:DispatchAction就是在struts-co ... -
Struts 体系结构与工作原理(图)
2008-05-08 01:54 2411Struts 体系结构是目前基于 java 的 web ... -
一个struts+sql server得分页(存储过程版)
2008-05-07 22:35 1533sql server分页使用存储过程要更高效些 下面这个存储过 ...
相关推荐
比上面的完整 博文链接:https://shangdiyefankun.iteye.com/blog/122443
Struts_学习笔记之ActionForm,简单配置即可达到效果
struts 视频 struts视频 actionform
最近自学java中的框架-struts写了一些小例子,这都是很经典的程序,如果大家瞧得起要下载去看看,顺便给俺找找不足的地方。我的qq 821865130 email qingtian_hechen@163.com 希望大家能多多给我帮助。在此谢谢各位!...
struts1使用actionform实现表单验证,表单验证失败追加信息。
主要是actionForm的基本验证,重写validate方法,返回actionErrors,然后根据资源文件显示错误。 这是一个demo例子,直接导入eclispe中即可。 并且这部分内容会在相应的博客中介绍,稍后会更新博客。
struts提供了标签来显示整个ActionErrors的错误信息。但要在struts-config.xml中设置<action ...
Struts Hibernate Spring 集成开发宝典 actionform 有研究或探讨或开源的请加群:37424970 或联系本人MSN或邮箱:zhuseahui@yahoo.com.cn
视频第二部分 下载前请阅读博客文章详细 博文链接:https://dlivan.iteye.com/blog/65870
Struts 1.3 备忘笔记 【资源特点】 1、以项目形式组织,包含所有的源代码 2、内含详细的注释说明 3、知识点较全面 【内容目录】 01 Struts_01HandworkApply : 手工配置Struct应用程序,演示用户提交数据后服务器的...
Struts 读书笔记,一小段内容摘抄: ...... Struts的ActionForm 对象是框架用来在用户和业务层之间来回传递数据的。框架会自动收集请求的输入,然后使用from bean 将数据传递给Action,最后再传递给业务层。 对于...