Я использовал AJAX для отправки данных в бэкэнд весенней загрузки с аннотацией @RequestBody
, чтобы принять их.Однако при этом он показал следующую ошибку, которая меня смущает:
Обязательный строковый параметр 'username' отсутствует
Вывод на консоль
Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'username' is not present]
AJAX-код
$("#submitBTN").click(
function(){
$.ajax({
type:"post",
async:false,
url:"/user/doSignIn?verification="+$("input[name='verificationCode']").val(),
contentType: "application/json;charset=utf-8",//必须加
data: JSON.stringify({
'username': $("input[name='username']").val(),
'password':$("input[name='password']").val(),
'email': $("input[name='email']").val()
}),
success:function(r){
if(r.code==window.ResponseStatus.OK){
$(window).attr('location',+'/index');
}else{
console.log(r.msg);
}
}
});
}
);
Entity User
@Entity
public class User {
// 自增id
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
// 用户名
@Pattern(regexp = "^.{4,14}$",groups = UserSignUp.class)
@Column(length = 14)
private String username;
// 密码
@Pattern(regexp = "^[0-9a-zA-Z!@#$%^&*.]{6,25}$")
@Column(length = 25)
private String password;
// 邮箱
@Email
private String email;
// 电话号码
@Pattern(regexp = "^\\d{11}$",groups = UserSignUp.class)
@Column(length = 11)
private String phoneNumber;
// 所属用户组
private byte userGroup;
RequestHandler code
@PostMapping(value = "/doSignUp")
public FOResponse doSignUp(@RequestBody User user,
BindingResult result,
@RequestParam String verificationCode,
HttpSession session){...}