Используйте @RequestBody для получения данных из ajax и привязки их к «User», но не удалось - PullRequest
0 голосов
/ 02 марта 2019

Я использовал 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){...}
...