首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

关于struts2在页面取值的有关问题

2012-06-10 
关于struts2在页面取值的问题这是我的修改界面的表单HTML codeform actionuser/update methodpost

关于struts2在页面取值的问题
这是我的修改界面的表单

HTML code
<form action="user/update" method="post">    <table border="0" align="center" width="700">        <tr height="30"><td colspan="2"><s:debug/></td></tr>        <tr height="30"><td colspan="2"><s:fielderror/></td></tr>        <tr height="30"><td>姓:</td><td><input type="text" name="firstname" value="${firstname}"></td></tr>        <tr height="30"><td>名:</td><td><input type="text" name="secondname" value="${secondname}"></td></tr>        <tr height="30"><td>年龄</td><td><input type="text" name="age" value="${age}"></td></tr>        <tr height="30"><td colspan="2"><input type="submit" value="submit">&nbsp;&nbsp;<input type="reset" value="reset"></td></tr>    </table></form>

这是我修改操作的action,我访问
Java code
import javax.annotation.Resource;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import com.hktk.entity.user.User;import com.hktk.service.user.UserService;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;@Controller("updateUserAction")@Scope("prototype")public class UpdateUserAction extends ActionSupport implements ModelDriven<User>{    private static final long serialVersionUID = 1L;    private User user = new User();        private UserService userService;    @Resource    public void setUserService(UserService userService) {        this.userService = userService;    }    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }    public String update() {        user = userService.load(user.getId());        System.out.println(user);        return INPUT;    }        @Override    public User getModel() {        return getUser();    }}


这个是我的实体类
Java code
import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="t_user")public class User {        private Integer id;    private String firstname;    private String secondname;    private int age;        @Id    @GeneratedValue    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getFirstname() {        return firstname;    }    public void setFirstname(String firstname) {        this.firstname = firstname;    }    public String getSecondname() {        return secondname;    }    public void setSecondname(String secondname) {        this.secondname = secondname;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }}


这个是我的数据传输类(其实和上面的User一模一样的)
Java code
public class UserInfo {        private Integer id;    private String firstname;    private String secondname;    private int age;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getFirstname() {        return firstname;    }    public void setFirstname(String firstname) {        this.firstname = firstname;    }    public String getSecondname() {        return secondname;    }    public void setSecondname(String secondname) {        this.secondname = secondname;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }} 


问题是这样的,当我在action的ModelDriven的模型设置为User时,在页面的表单中取不到任何值,当action的ModelDriven的模型设置为UserInfo时,在页面就能取到值,这是为什么呢?还有为什么el表达式能取到action中的值呢?
我把ModelDriven的模型设置为UserInfo的代码也贴出来吧,大家帮忙看看,解决下上述两个问题!
Java code
import javax.annotation.Resource;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import com.hktk.entity.user.User;import com.hktk.service.user.UserService;import com.hktk.vo.user.UserInfo;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;@Controller("updateUserAction")@Scope("prototype")public class UpdateUserAction extends ActionSupport implements ModelDriven<UserInfo>{    private static final long serialVersionUID = 1L;    private UserInfo user = new UserInfo();        private UserService userService;    @Resource    public void setUserService(UserService userService) {        this.userService = userService;    }    public UserInfo getUser() {        return user;    }    public void setUser(UserInfo user) {        this.user = user;    }    public String update() {        User u = userService.load(user.getId());        user.setFirstname(u.getFirstname());        user.setSecondname(u.getSecondname());        user.setAge(u.getAge());        System.out.println(user);        return INPUT;    }        @Override    public UserInfo getModel() {        return getUser();    }}



[解决办法]
在Action的时候有值对吧!
<tr height="30"><td>姓:</td><td><input type="text" name="firstname" value="${firstname}"></td></tr>
<tr height="30"><td>名:</td><td><input type="text" name="secondname" value="${secondname}"></td></tr>这句话;
改下这样也行:<input type="text" readonly="readonly" name="coupon_no" value="<s:property value="usre.secondname"/>" />试试看

热点排行