首页 > 解决方案 > 对于 5 个构造函数参数中的 2 个,邮递员对 spring 的 post 调用始终为 null

问题描述

我提前道歉,因为我不知道如何表达这个问题。我有以下课程:

@Entity
@Table(name = "users")
public class User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private long id;

@Column(name = "username", length = 30)
private String username;

@Column(name = "email", length = 60)
private String email;

@Column(name = "birthday", length = 40)
private Date birthday;

@Column(name = "password", length = 60)
private String password;

@Column(name = "profilepic", length = 60)
private String profilePic;

public User() {
}

public User(String username, String email, String password, Date birthday, String profilePic) {
    this.username = username;
    this.email = email;
    this.password = password;
    this.birthday = birthday;
    this.profilePic = profilePic;
}


public long getId() {
    return id;
}

public String getUsername() {
    return username;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public Date getBirthday() {
    return birthday;
}

public void setBirthday(Date birthday) {
    this.birthday = birthday;
}

public String getPassword() {
    return password;
}

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

public String getProfilePic() {
    return profilePic;
}

public void setProfilePic(String profilePic) {
    this.profilePic = profilePic;
}
}

然后在 UserController 类中我有一个 addUser 方法:

@RequestMapping("/api")
@RestController
public class UserController {

private final UserRepository userRepository;

@Autowired
public UserController(UserRepository userRepository) {
    this.userRepository = userRepository;
}


@RequestMapping(method = RequestMethod.POST)
public ResponseEntity addUser(@ModelAttribute User user) {
    userRepository.save(user);

    return new ResponseEntity("User Created!", HttpStatus.OK);
}

@GetMapping
public List<User> getAllUsers() {
    return userRepository.findAll();
}

}

当我以表单数据或表单 urlencoded 形式发送邮递员请求时,它会保存一个新用户,但用户名和 profilepic 始终为空。到目前为止,我已经仔细检查了 15 次以上的拼写,所以我认为不是这样。为什么那些 2 总是空的?

邮递员身体

标签: javaspringrestspring-bootpostman

解决方案


因为在您的Postman身体中,您使用user_nameandprofilepic而不是usernameand profilePic。还要添加 setter 的username

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

推荐阅读