STOMP在后端Java Springboot上接收空值

STOMP在后端Java Springboot上接收空值,java,spring-boot,stompjs,Java,Spring Boot,Stompjs,这是我第一次使用WebSocket,我仍在适应springboot。 我一直在关注这个教程,并且运行得很好 不过,我对代码做了一些调整,并添加了一个新的ChatUser模型。当我尝试使用stompClient发送消息时,前端填充一个模型并将其发送到后端,但是在java端,该模型充满了空值。请解释为什么会发生这种情况。如果我尝试接收一个字符串或聊天信息(教程中的原始模型),则模型填充良好 后端消息处理程序 @MessageMapping("/chat.addUser") @SendTo("/top

这是我第一次使用WebSocket,我仍在适应springboot。 我一直在关注这个教程,并且运行得很好

不过,我对代码做了一些调整,并添加了一个新的ChatUser模型。当我尝试使用stompClient发送消息时,前端填充一个模型并将其发送到后端,但是在java端,该模型充满了空值。请解释为什么会发生这种情况。如果我尝试接收一个字符串或聊天信息(教程中的原始模型),则模型填充良好

后端消息处理程序

@MessageMapping("/chat.addUser")
@SendTo("/topic/public")
public ChatUser addUser(@Payload ChatUser user, SimpMessageHeaderAccessor headerAccessor) {
    //add username in web socket session
    ChatService service = new ChatService();
    if(user.getId() == null) {
        service.incrementId();
        user.setId(service.getNewId());
    }
    user.setStatus(Status.ACTIVE);
    service.addActiveUsers(user);
    headerAccessor.getSessionAttributes().put(Constants.USERID, user.getId());
    headerAccessor.getSessionAttributes().put(Constants.USERNAME, user.getUserName());
    return user;
}
用户界面

我简化了UI中的模型,以查看是否可以只填充用户名,但它仍然返回空值。它在删除@Payload时也失败了

聊天室用户模型

package com.webchatapp.webchatapplication.model;

public class ChatUser {
private String user;
private Integer id;
private Status type;
private ChatMessage message;

public enum Status{
    ACTIVE,
    DISCONNECTED
}
public String getUserName() {
    return user;
}
public void setUserName(String user) {
    this.user = user;
}
public Integer getId() {
    return id;
}
public void setChatMessage(ChatMessage message) {
    this.message = message;
}
public ChatMessage getChatMessage() {
    return message;
}
public void setId(Integer id) {
    this.id = id;
}
public Status getStatus() {
    return type;
}
public void setStatus(Status type) {
    this.type = type;
}

}

更新:似乎是在模型中传递模型的问题。springboot能处理这个问题吗?它是开箱即用的。你确定
username
在发送时有一个非空值吗?如果数据类型不正确,也可能失败
package com.webchatapp.webchatapplication.model;

public class ChatUser {
private String user;
private Integer id;
private Status type;
private ChatMessage message;

public enum Status{
    ACTIVE,
    DISCONNECTED
}
public String getUserName() {
    return user;
}
public void setUserName(String user) {
    this.user = user;
}
public Integer getId() {
    return id;
}
public void setChatMessage(ChatMessage message) {
    this.message = message;
}
public ChatMessage getChatMessage() {
    return message;
}
public void setId(Integer id) {
    this.id = id;
}
public Status getStatus() {
    return type;
}
public void setStatus(Status type) {
    this.type = type;
}