设置bean时的Nullpointerexception

时间:2013-07-05 12:16:53

标签: java struts2 nullpointerexception action javabeans

点击超链接后我有一个操作网址

/SocialStupendous/GetProfile.action?slno=3&slno=3

在我的execute ActionClass方法中,我有以下代码

public String execute() {
  int urislno=Integer.parseInt(getServletRequest().getParameter("slno"));
  System.out.println(urislno);
  bean.setUslno(urislno);       
}

我在执行NullPointerException时收到bean.setuslno(urislno)。即使urislno正确打印为3

ProfileBean课程:

public class ProfileBean {

  private int uslno;

  public int getUslno() {
    return uslno;
  }

  public void setUslno(int uslno) {
    this.uslno = uslno;
  }
}

为什么会这样?

1 个答案:

答案 0 :(得分:5)

bean未初始化。你应该在动作中以某种方式初始化它

private ProfileBean bean = new ProfileBean(); 
//and add getter ans setter
然而,更好的方法是让容器为你做。您只需要在struts.xml

中创建一个bean配置
<bean class="com.yourpackagename.ProfileBean" scope="default"/>

然后你会有

private ProfileBean bean;

@Inject
public void setProfileBean(ProfileBean bean) {
  this.bean = bean;
}

并且您不需要解析参数请求,这已经由params拦截器完成,defaultStack拦截器是您的操作应该运行的private Integer slno; public Integer getSlno() { return slno; } public void setSlno(Integer uslno) { this.slno = slno; } 的一部分。您应该在操作中创建属性以保存参数值。

public String execute() {

   if (slno != null) {
     System.out.println(slno)
     bean.setUslno(slno);
   }

   ......
   return SUCCESS;
}

并且操作看起来像

{{1}}