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