需要查询一个用户的id,头像,用户名,以及当前用户的在线状态
因为用户表里没有在线状态,而且这是需要随时变动的,所以就定义了一个类包装一下这些数据
public class ChatNow {
private Integer userId;/*聊天对象的id*/
private String account;/*聊天对象的账号*/
private String headImg;/*聊天对象的头像*/
private String ifOnline;/*在线状态*/
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getHeadImg() {
return headImg;
}
public void setHeadImg(String headImg) {
this.headImg = headImg;
}
public String getIfOnline() {
return ifOnline;
}
public void setIfOnline(String ifOnline) {
this.ifOnline = ifOnline;
}
}
然后在server层调用
ChatNow chatNow = new ChatNow();
chatNow.setUserId(userInfo.getId());
chatNow.setAccount(userInfo.getAccount());
chatNow.setHeadImg(userInfo.getHeadImg());
if (WebSocket_Chat.ifOnline(receiver)){
modelMap.addAttribute("ifOnline","在线");
}else {
modelMap.addAttribute("ifOnline","离线");
}
System.out.println(chatNow);
modelMap.addAttribute("otherUser",chatNow);
控制台输出是有数据的,分别输出对应的id,headImg,account都可以输出,然后把chatNow对象传给前端,用thymeleaf接收就会报错
Property or field '***' cannot be found on null
但是之前返回其他的实体类都是可以的,但是那些实体类都是用@Entity注解了的,持久化的,怀疑可能和这个有关。但是这些数据都是临时需要,不需要持久化。
改为下面这样分别返回虽然可以接收,但还是想知道为啥上面方法不行。实在太小白了,比较菜,希望有知道的大神指教一下。
// ChatNow chatNow = new ChatNow();
// chatNow.setUserId(userInfo.getId());
// chatNow.setAccount(userInfo.getAccount());
// chatNow.setHeadImg(userInfo.getHeadImg());
if (WebSocket_Chat.ifOnline(receiver)){
// chatNow.setIfOnline("在线");
modelMap.addAttribute("ifOnline","在线");
}else {
// chatNow.setIfOnline("离线");
modelMap.addAttribute("ifOnline","离线");
}
// System.out.println(chatNow);
// modelMap.addAttribute("otherUser",chatNow);
modelMap.addAttribute("userId",userInfo.getId());
modelMap.addAttribute("account",userInfo.getAccount());
modelMap.addAttribute("headImg",userInfo.getHeadImg());
不胜感激!