java - 设置 bean 时出现空指针异常

标签 java struts2 nullpointerexception action javabeans

点击这样的超链接后我有一个操作 URL

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

ActionClassexecute 方法中,我有以下代码

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

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/

相关文章:

java - 多个继承类,它们必须在单独的文件中吗?

java - ExecutorService、Future、Threads 当所有 Runnables 必须完成时出现 Actives

java - struts 2的execute方法之后调用的validate方法

java - 下载文件时删除文件

内存中异常的 Java 大小

java - 为什么在空引用上调用(静态)方法不会抛出 NullPointerException?

java - 接口(interface)是否提供完整的抽象?如何?

java - 从 Java 客户端到 .NET 服务器建立 SSL 连接时出错

java - 如何在显示JSP后执行hibernate session.close()以避免lazy=false

java - equals() 给我空指针异常