gpt4 book ai didi

Java containsKey() 不起作用

转载 作者:行者123 更新时间:2023-12-01 10:47:02 25 4
gpt4 key购买 nike

我正在为大学类(class)实现一个 Web 项目,该项目使用 struts2,当我运行该项目时,它会在 containsKey() 中阻塞。它不打印任何字符串。

这是我遇到问题的一些代码:

package fundstarter.action;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.interceptor.SessionAware;

import java.rmi.RemoteException;
import java.util.Map;
import fundstarter.model.ConnectToRMIBean;

public class LogInAction extends ActionSupport implements SessionAware {
private static final long serialVersionUID = 4L;
private Map<String, Object> session;
private String username = null;
private String password = null;

@Override
public String execute() throws RemoteException {

this.getConnectToRMIBean().setUsername(this.username);
this.getConnectToRMIBean().setPassword(this.password);

this.getConnectToRMIBean().logIn();


return "done";
}

public void setUsername(String username) {
this.username = username;
}

public void setPassword(String password) {
this.password = password;
}

public ConnectToRMIBean getConnectToRMIBean() {

if(!session.containsKey("RMIBean")){
System.out.println("hello little trouble maker");
this.setConnectToRMIBean(new ConnectToRMIBean());
}
System.out.println("Hey snowball");
return (ConnectToRMIBean) session.get("RMIBean");
}

public void setConnectToRMIBean(ConnectToRMIBean RMIBean) {
System.out.println("I'm positive he's dead");
this.session.put("RMIBean", RMIBean);
}

@Override
public void setSession(Map<String, Object> arg0) {
// TODO Auto-generated method stub

}
}

我的代码和我的教授写的一模一样,但我不知道我的代码出了什么问题?

最佳答案

您应该得到一个 NullPointerException,因为您从未这样做过

this.session = /*...some object here...*/;

...任何地方,因此 session 有其默认值 (null)。因此,您对 getConnectToRMIBean 的第一次调用将尝试调用 session.containsKey 并失败,因为您无法通过 null 引用调用实例方法。

由于您使用的是 SessionAware,Struts 会为您调用 setSession,但您需要填写它,例如

@Override
public void setSession(Map<String, Object> theSession) {
this.session = theSession;
}

要么添加构造函数并将初始化放入构造函数中,要么将其作为初始化程序添加到声明行的末尾(因为这是您进行其他初始化的位置):

private Map<String, Object> session = new Map<String, ConnectToRMIBean>();

关于Java containsKey() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34121121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com