点击超链接后我有一个操作网址
/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;
}
}
为什么会这样?
答案 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}}