由于初学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