领域对象接受用户输入参数 传入为空


由于初学struts,练手起来诸多问题,领域对象接受用户输入参数,总是报错

得到的user.password始终传不过来,为null


jsp部分

     <form action="User_register.action" method="post"> 
      名字<input type="text" name="user.username"/>
     密码 <input type="text" name="user.password"/>
     邮箱 <input type="text" name="user.email"/>
      <input type="submit">
      </form>

User部分

public class User implements Serializable {
   private int userId;
   private String username;
   private String password;
   private String email;

Action部分

public String register(){
  if(this.hasFieldErrors()){
  return INPUT;
  }
  boolean registerSuccess=userDao.registerUser(user);
  if(registerSuccess){
  return SUCCESS;
  }else{
  return ERROR;
  }
  
   }

后来发现时由于

public class UserAction extends ActionSupport {
   private User user;

应该提供User的getter和setter方法

 public User getUser() {
return this.user;
}
public void setUser(User user) {
this.user = user;
}  

在UserAction中没有创建任何的User对象,按常理说应该抛出NullPointerException,

但是Struts会遍历所有的的请求参数来自动实例化用于填充数据的对象,如struts尝试设置User的username时,

将会依次调用以下方法:

action.getUser();

acion.setUser(new User());

action.getUser().setUsername();

所以必须在action中提供领域对象对象的getter和setter方法

否则会接受不到,即为null





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值