设置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配置

  

那么你会有

 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; }