我有个jsp页面,form中有个<input type="text" name="user.name" />在我的action种有个私有成员private User user,User中有无参构造、所有属性的set、get方法。可是我在execute()中user为null。我用request.get...(user.name)可以取得输入的值。想问下可能产生的原因?自我分析:首先程序运行,当提交表单时正常进入execute()方法。再request能去到值。同一个工程下有一个别的页面有类似的用法(不是User)可以直接取得,不为空。求大侠指教!!

解决方案 »

  1.   

    action 中 有没setUser getUser方法?
    interceptor 中没加params的?
      

  2.   


    /**
     * DarwRegister entity.
     * 
     * @author MyEclipse Persistence Tools
     */public class DarwRegister implements java.io.Serializable { // Fields private Integer id;
    private String username;
    private String role;
    private String areacode;
    private String other; // Constructors /** default constructor */
    public DarwRegister() {
    } /** full constructor */
    public DarwRegister(String username, String role, String areacode,
    String other) {
    this.username = username;
    this.role = role;
    this.areacode = areacode;
    this.other = other;
    } // Property accessors public Integer getId() {
    return this.id;
    } public void setId(Integer id) {
    this.id = id;
    } public String getUsername() {
    return this.username;
    } public void setUsername(String username) {
    this.username = username;
    } public String getRole() {
    return this.role;
    } public void setRole(String role) {
    this.role = role;
    } public String getAreacode() {
    return this.areacode;
    } public void setAreacode(String areacode) {
    this.areacode = areacode;
    } public String getOther() {
    return this.other;
    } public void setOther(String other) {
    this.other = other;
    }}
    action 中 也要有setUser getUser方法
      

  3.   

    关键就是有set/get方法,我也不想用一个一个参数传递。代码如下:public class AcctAdd extends NetctossAction {
    private User acct;
    private IUserService userService;

    public String execute(){
    userService.addUser(acct);
    return SUCCESS;
    } public User getAcct() {
    return acct;
    } public void setAcct(User acct) {
    this.acct = acct;
    } public void setUserService(IUserService userService) {
    this.userService = userService;
    }
    }
      

  4.   

    我说你用的也不是struts2标签,input标签能支持类名.属性名的访问吗?这也太悲剧了吧!
      

  5.   

    使用模型驱动需要实现ModelDriver接口public class AcctAdd extends NetctossAction  implements ModelDriver<User>{
    private User acct;
    private IUserService userService;public String execute(){
    userService.addUser(acct);
    return SUCCESS;
    }public User getAcct() {
    return acct;
    }public void setAcct(User acct) {
    this.acct = acct;
    }public void setUserService(IUserService userService) {
    this.userService = userService;
    }public User getModel(){
        return user;
    }
    }
      

  6.   

    使用模型驱动需要实现ModelDriver接口public class AcctAdd extends NetctossAction implements ModelDriver<User>{
    private User acct;
    private IUserService userService;public String execute(){
    userService.addUser(acct);
    return SUCCESS;
    }public User getAcct() {
    return acct;
    }public void setAcct(User acct) {
    this.acct = acct;
    }public void setUserService(IUserService userService) {
    this.userService = userService;
    }public User getModel(){
    return acct;//这里刚刚写错了
    }
    }
      

  7.   

    有些东西是不可以省地。User对象的定义中,get/set方法
    JSP中 要用Struts标签
    很明显你现在还在用html标签。
      

  8.   

    首先,先说下你的jsp页面问题:
    你的form中的标签:<input type="text" name="user.name" />建议这么使用:<input type="hidden" name="username" value="<s:property value="#user.name"/>"/>其次,你要了解struts2中的action的应用,聚合对象的目的作用是不大的,主要是要用对象的getter和setter法方。
    建议先好好看看相关资料。
      

  9.   

    private User acct;
    所以<input type="text" name="acct.name" />