Ajax-функция JQuery отправляет правильное значение. Но RestController получает ноль - PullRequest
0 голосов
/ 02 апреля 2019

Эти коды являются RestController моего весеннего загрузочного проекта,

@RestController
@RequestMapping(value="/rest/user")
public class UserRestController {

    @Autowired
    private UserService userService;

    @PostMapping("login")
    public ResponseEntity<Boolean> authenticated(@RequestBody User user) {

        System.out.println(user.getUsername() +":"+ user.getPassword()); //This line returns NULL password value

        Boolean blogin = userService.authenticate(user.getUsername(), user.getPassword());
        if(!blogin)
            return new ResponseEntity<Boolean>(blogin, HttpStatus.NOT_ACCEPTABLE);

        return new ResponseEntity<Boolean>(blogin, HttpStatus.OK);
    }
}

А ниже приведены коды jQ-скриптов JQuery ajax.

function ajax_login_submit() {

    var user = {
            username: $("#username").val(),
            password: $("#password").val()
        }; 

    console.log(user);

    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "rest/user/login",
        data: JSON.stringify(user),
        dataType: 'json',
        success: function (data) {

            var resultJson = JSON.stringify(data);
            $('#helloUserDiv').html(resultJson);
            console.log("SUCCESS : ", data);
            alert(data);

        },
        error: function (e) {

            var resultJson = e.responseText;
            $('#helloUserDiv').html(resultJson);
            console.log("ERROR : ", e);
        }
    });
}

console.log(user); java-скрипта возвращает правильное значение.

{"username":"joseph","password":"password"}

Но в кодах RestController значение пароля отсутствует, «NULL». Строка System.out.println(user.getUsername() + ":" + user.getPassword()); возвращает странное значение, "joseph:null" Возможно ли, чтобы метод JQuery ajax не передавал значение json серверу REST? Если я сделаю несколько ошибок, пожалуйста, сообщите мне, как правильно отправить значение json на REST-сервер.

1 Ответ

1 голос
/ 07 апреля 2019

Попробуйте это:

 $.ajax({
        type: "POST",
        contentType: "application/json",
        url: "rest/user/login",
        data: JSON.stringify({"username": $("#username").val(), "password": $("#password").val()}),
        dataType: 'json',
        success: function (data) {
            var resultJson = JSON.stringify(data);
            $('#helloUserDiv').html(resultJson);
            console.log("SUCCESS : ", data);
            alert(data);
        },
        error: function (e) {
            var resultJson = e.responseText;
            $('#helloUserDiv').html(resultJson);
            console.log("ERROR : ", e);
        }
});
...