冯炼
侠客
侠客
  • UID175
  • 粉丝1
  • 关注0
  • 发帖数11
阅读:32043回复:3

struts2使用Set接收表单传入的参数值时,getPassword()为null

楼主#
更多 发布于:2016-10-12 16:28
1.这是定义用于接收登录表单的form类:
public class User {
 private String username;
 private String password;
 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;
 }
}
2.在使用Set获取表单传入的参数值时,使用user.getPassword()获取的值为null,但在user的setPassword()中传入的值为表单提交的值。

public class LoginAction_Set extends ActionSupport {
 private User user;
 public void setUser(User user) {
 this.user = user;
 }
 @Override
 public String execute() throws Exception {
 // TODO Auto-generated method stub
 String username = user.getUsername();
 //user自带的getPassword()此时赋值为null?
 String password = user.getPassword();
 if(password==null||password.isEmpty()||username==null||username.isEmpty()){
 System.err.println("password为null");
 return null;
 }
 DbSession dbSession = new DbSession();
 String sql = "select id from user where name=? and password=?";
  List list = dbSession.queryBaseInfo(sql, username, password);
  
  if(list.size() == 1){
  return "success";
  }else{
  return "index";
  }
  }
 
 
}
杨潇
骑士
骑士
  • UID150
  • 粉丝1
  • 关注0
  • 发帖数6
  • 社区居民
沙发#
发布于:2016-10-13 14:26
这要看你前台表单是怎么写的了,标签的name属性必须写并且是name=user.name这样的写法,而且如果实在获取不到值,你直接使用ModelDriven拦截器来完成封装前台参数的值吧
戒骄戒躁,再小的事情也要认真的对待!
冯炼
侠客
侠客
  • UID175
  • 粉丝1
  • 关注0
  • 发帖数11
板凳#
发布于:2016-10-13 17:54
1.值从jsp那里获取到了,我在这里设置了:

图片:java.png



2.在控制台显示效果如下:


图片:java2.png


3.在ModelDriven<User>接口中实现的步骤,在调用getModel().getPassword()返回值如上:
null:fenglian。

图片:re.png

杨潇
骑士
骑士
  • UID150
  • 粉丝1
  • 关注0
  • 发帖数6
  • 社区居民
地板#
发布于:2016-10-14 15:06
你值不是获取到了吗?最后那个是你的uesrname为空导致输出password为null,你把你if条件好好看看
戒骄戒躁,再小的事情也要认真的对待!
游客

返回顶部