struts2中ModelDriven
来源:互联网 发布:上报人数汇总软件 编辑:程序博客网 时间:2024/06/13 23:38
今天发现了struts2中一个很好用的用于接受前台参数的方法。即ModelDriven接口。
现在假如有实体类User如下:
package cn.com.leadfar.struts2.actions; public class User { private int id; private String username; private String password; private int age; private String address; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
现在在Action中需要添加前台jsp用户表单中的属性,jsp如下:
<form action="test/user.action" method="post"> <input type="hidden" name="method:add"> username:<input type="text" name="username"> <br/> password:<input type="text" name="password"> <br/> age:<input type="text" name="age"> <br/> address:<input type="text" name="address"> <br/> <input type="submit" name="submit" value="添加用户"> </form> <br/>
第一种做法是在Action中定义所有需要的属性,然后添加到一个User对象中:
public class UserAction { private int id; private String username; private String password; private int age; private String address; public String add(){ User user = new User(); user.setId(id); user.setUsername(username); user.setPassword(password); user.setAge(age); user.setAddress(address); new UserManager().addUser(user); return "success"; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }上述做法不好之处是:如果实体类的属性非常多,那么Action中也要定义相同的属性。
第二种做法是将User对象定义到UserAction中,然后在JSP中通过user属性来给user赋值:
UserAction:
public class UserAction { private User user; public String add(){ new UserManager().addUser(user); return "success"; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }add_input.jsp:
<form action="test/user.action" method="post"> <input type="hidden" name="method:add"> username:<input type="text" name="user.username"> <br/> password:<input type="text" name="user.password"> <br/> age:<input type="text" name="user.age"> <br/> address:<input type="text" name="user.address"> <br/> <input type="submit" name="submit" value="添加用户"> </form> <br/>
这种做法不好的地方是:JSP页面上表单域中的命名变得太长
第三种做法是利用ModelDriven机制,让UserAction实现一个ModelDriven接口,同时实现接口中的方法:getModel()。如下所示:
public class UserAction implements ModelDriven{ private User user; @Override public Object getModel() { if(user == null){ user = new User(); } return user; } public String add(){ new UserManager().addUser(user); return "success"; } public User getUser() { return user; } public void setUser(User user) { this.user = user; }}JSP的代码如下:
<form action="test/user.action" method="post"> <input type="hidden" name="method:add"> username:<input type="text" name="username"> <br/> password:<input type="text" name="password"> <br/> age:<input type="text" name="age"> <br/> <input type="submit" name="submit" value="添加用户"></form> <br/>
可见,第三种做法是比较好的,Action和JSP写起来都比较简单。
机制原理参考文章:http://blog.csdn.net/li_tengfei/article/details/6098145
阅读全文
0 0
- struts2中使用ModelDriven
- (十四)Struts2中ModelDriven
- struts2中使用ModelDriven
- struts2中ModelDriven
- maven struts2中,使用ModelDriven
- Struts2中ModelDriven的使用
- Struts2 中 模板驱动ModelDriven
- struts2 ModelDriven
- struts2--ModelDriven
- Struts2--ModelDriven
- struts2 modeldriven
- struts2 中修改modelDriven的refreshModelBeforeResult参数
- Struts2中ModelDriven的陷阱及其预防
- 关于struts2中ModelDriven的笔记
- 奇妙的paramsPrepareParamsStack——Struts2中ModelDriven问题
- struts2之ModelDriven
- struts2之ModelDriven
- struts2之ModelDriven
- hadoop机架感知
- 正则表达式 php
- 【swift】使用oc的控件
- Kotlin基础教程-返回值和跳转
- 【Java8源码分析】线程-ThreadLocal的全面剖析
- struts2中ModelDriven
- Android手机移植TensorFlow,实现物体识别、行人检测、图像风格迁移
- NLTK下载语言素材中碰到的certificate verify failed (_ssl.c:749)
- 二维树状数组模板
- 深入理解Java:注解(Annotation)基本概念
- linux 驱动 20017-5-31
- 【zookeeper】Windows下zookeeper的安装配置
- 从机sshfs访问主机文件系统
- 文章标题