基于struts2的模型驱动示例
2014-03-03 10:51
281 查看
当我们在action类中使用某个对象来封装页面中传递的参数时,如果我们仍然想使用原来的参数名来作为标签的命名,则可以使用模型驱动。
![](https://img-blog.csdn.net/20140303104422656?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2luZ2hlcm9vbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20140303104428406?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2luZ2hlcm9vbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20140303104434343?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2luZ2hlcm9vbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
实现模型驱动首先要先让action类实现ModelDriven<T>接口,T为Action类中的封装对象并重写getModel()方法,返回该javabean的实例
* 模型驱动的原理:
* 在不使用模型驱动的时候,之所以在动作类中获取不到对应的属性的原因:
* 在ValueStack中没有对应javabean的所有属性
* 模型驱动的作用,就是将javabean的实例压入对象栈的栈顶,从而可以获取到对应的属性的值
页面回显技术:
* 通过模型驱动,在动作类action中,可以获取到页面中元素的值
//方法一
* 通过javabean实例的set()方法,将新的内容set到javabean中,从而放置在页面对应元素中
user.setUsername(newUser.getUsername());
user.setTel(newUser.getTel());
user.setDes(newUser.getDes());
//方法二
* 首先将值栈中,旧的javabean的内容,删除掉
* 然后将新的内容压入到值栈中的栈顶
ValueStack valueStack = ServletActionContext.getContext().getValueStack();
valueStack.pop();
valueStack.push(newUser);
实现模型驱动首先要先让action类实现ModelDriven<T>接口,T为Action类中的封装对象并重写getModel()方法,返回该javabean的实例
public class UserAction extends ActionSupport implements ModelDriven<User> { //先要new出user对象 private User user = new User(); public User getModel() { return user; } public String add(){ System.out.println("UserAction ************* add()"); return "add"; } public String save(){ System.out.println("UserAction ************* save()"); return "success"; } public String update(){ System.out.println("UserAction ************* update()"); return "success"; } }
* 模型驱动的原理:
* 在不使用模型驱动的时候,之所以在动作类中获取不到对应的属性的原因:
* 在ValueStack中没有对应javabean的所有属性
* 模型驱动的作用,就是将javabean的实例压入对象栈的栈顶,从而可以获取到对应的属性的值
页面回显技术:
* 通过模型驱动,在动作类action中,可以获取到页面中元素的值
//方法一
* 通过javabean实例的set()方法,将新的内容set到javabean中,从而放置在页面对应元素中
user.setUsername(newUser.getUsername());
user.setTel(newUser.getTel());
user.setDes(newUser.getDes());
//方法二
* 首先将值栈中,旧的javabean的内容,删除掉
* 然后将新的内容压入到值栈中的栈顶
ValueStack valueStack = ServletActionContext.getContext().getValueStack();
valueStack.pop();
valueStack.push(newUser);
相关文章推荐
- struts2基于模型驱动的文件上传(上传视频为例子)
- 【tornado】系列项目(二)基于领域驱动模型的区域后台管理+前端easyui实现
- Struts2浅析 之 模型驱动与属性驱动
- struts2属性驱动(Property Driver)和模型驱动(Model Driver)区别
- 20170920_chr_Struts2Cal_model 计算器模型驱动
- Struts2笔记——Struts2的模型驱动(ModelDriven)
- 关于struts2 与Ajax整合的版本问题之模型驱动,属性驱动
- 基于嵌入式Linux的视频采集系统---UVC驱动模型介绍
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- 【Java EE 学习 36】【struts2】【struts2系统验证】【struts2 ognl值栈】【struts2 ongl标签】【struts2 UI标签】【struts2模型驱动和令牌机制】
- Struts2中的属性驱动和模型驱动
- struts2学习笔记-模型驱动和属性驱动
- Struts2 属性驱动、模型驱动、异常机制
- struts2模型驱动属性名要和页面一致
- 详解Linux2.6内核中基于platform机制的驱动模型
- Struts2 - 属性驱动与模型驱动 中应该注意的问题。
- Java基于Lock的生产者消费者模型示例
- Struts2的模型驱动(ModelDriven)
- Struts2的属性驱动与模型驱动的区别