点击这样的超链接后我有一个操作 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 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;
}
Action 看起来像
public String execute() {
if (slno != null) {
System.out.println(slno)
bean.setUslno(slno);
}
......
return SUCCESS;
}
关于java - 设置 bean 时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17488719/