java – 设置bean时的Nullpointerexception

点击超级链接后,我有一个操作URL

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

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

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

当我执行bean.setuslno(urislno)时,我得到NullPointerException.即使urislno打印得恰到好处3.

ProfileBean类:

public class ProfileBean {

  private int uslno;

  public int getUslno() {
    return uslno;
  }

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

为什么会这样?

解决方法:

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;
}
上一篇:java-NullPointerException,杀死了我的程序


下一篇:java-尝试捕获块中的空指针异常