Jsf 托管bean属性在另一个请求中变为null
使用Jsf 托管bean属性在另一个请求中变为null,jsf,Jsf,使用new ArrayList()初始化列表时遇到问题。这是我的班级:- @ManagedBean(name = "clientBean") @SessionScoped public class ClientBean { public String msg = "", input, pendingMsg = "", user = ""; public GossipClient client; public boolean inputDisabled = true, s
new ArrayList()
初始化列表时遇到问题。这是我的班级:-
@ManagedBean(name = "clientBean")
@SessionScoped
public class ClientBean {
public String msg = "", input, pendingMsg = "", user = "";
public GossipClient client;
public boolean inputDisabled = true, sendBtnDisabled = true, startBtnDisabled = false;
String key = null;
public List<ClientBeanDto> dtos;
ClientBeanDto dto;
String style;
public List<OnlineList> onlineList;
OnlineList userInfo;
OnlineList newUser = null;
public void start() throws UnknownHostException, IOException {
client = new GossipClient(this);
if (user != null && user != "" && client.connect()) {
try {
BufferedReader reader = new BufferedReader(new FileReader("D://key.txt"));
key = reader.readLine();
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
client.start();
inputDisabled = sendBtnDisabled = false;
startBtnDisabled = true;
msg = pendingMsg = "";
pendingMsg = user + ", you are connected!";
client.sendNick(key + user);
onlineList = new ArrayList<OnlineList>();
dtos = new ArrayList<ClientBeanDto>();
}
.
.
.
}
@ManagedBean(name=“clientBean”)
@会议范围
公共类ClientBean{
公共字符串msg=“”,输入,pendingMsg=“”,用户=“”;
公共客户机;
public boolean inputDisabled=true,sendBtnDisabled=true,startBtnDisabled=false;
字符串键=null;
公开名单DTO;
客户与dto;
弦乐风格;
公开名单;
在线用户信息;
OnlineList newUser=null;
public void start()引发UnknownHostException,IOException{
客户机=新客户机(此);
if(user!=null&&user!=“&&client.connect()){
试一试{
BufferedReader=new BufferedReader(新文件阅读器(“D://key.txt”);
key=reader.readLine();
reader.close();
}捕获(例外e){
e、 printStackTrace();
}
client.start();
inputDisabled=sendBtnDisabled=false;
startBtnDisabled=真;
msg=pendingsg=“”;
pendingMsg=user+“,您已连接!”;
client.sendNick(key+user);
onlineList=新的ArrayList();
dtos=新的ArrayList();
}
.
.
.
}
问题在于public List onlineList
。在start()
方法中,当执行行onlineList=new ArrayList();
时,在调试模式下,我发现它的值为null,而下一行中的类似对象dtos
被初始化并成功分配了一个id。
我似乎找不到这种行为的任何原因,我没有得到任何错误/例外。任何智慧都将受到赞赏
更新:发现每当单击xhtml按钮(bean支持的按钮)时,
列表将变为空。但我找不到原因。bean将进行会话处理,而另一个列表(dtos
)对象将保留。用户!=“
始终为真。使用!user.equals(“”)
或!user.isEmpty()
instead@Bohemian我正在初始化user=“”
;此外,这只是初稿,我只考虑预期用户操作的功能,稍后将处理更精细的细节;这不是这里的问题,您依赖字符串插入,它可以工作,但如果您从其他地方传入一个空白,则无法按预期工作。不要初始化用户并删除该测试