关于Struts 1.x actiomForm
关于Struts 1.x actiomForm
jsp form表单---提交-->ActiomForm--->action---->取出Form中的属性放入VO中----->存到数据库里
如何在actiomForm直接得到VO
1.
jsp里的name名字不变,
actionForm的属性就不是jsp里name的那些属性里
放的是VO,jsp页面对应的VO
如何实现
actionForm的原理:
在struts1中,当点击submit页面提交后, 由 ActionServlet交给RequestProcessor的processPopulate
()方法, 由processPopulate()方法收集请求数据,放在map中,key为表单域的name属性,如 name,
account.name, stocks[0].code. 然后借助于 Common-beanutils 工具包设置到 ActionForm 的相应属性
中,struts对ActionForm中的数据赋值也是从这个map里取值的。
比如:
如果key是简单的'userName',直接form里的方法setUserName(map.get('userName'));
正常的set方法里都是this.usrname= username
现在不这么写
ActiomForm 是VO
public void setUsername(String username) {
empvo.setUsername(username);
}
待会acton里就可以得到Vo了不用再转化了
注意:
要在actiomForm的 public void reset(ActionMapping mapping, HttpServletRequest request)
的方法里new这个vo对象
为什么?
actiomForm
工作机制是首先要执行reset清除map的数据
然后执行set方法
最后执行 validate方法
2.
在jsp页面的命名变了
变成 uservo.username
actiomForm里写get set vo 的方法就可以了
如果key是'uservo.userName', 执行的操作是form.getUser().setUserName(map.get
('user.userName');
注意:
要在actiomForm的 public void reset(ActionMapping mapping, HttpServletRequest request)
的方法里new这个vo对象
为什么?
actiomForm
工作机制是首先要执行reset清除map的数据
然后执行set方法
最后执行 validate方法