Я сделал ajax-запрос к серверу для проверки, существует ли конкретное имя пользователя в базе данных.Вот код для этого ..
$("input[placeholder='Username']").focusout(function() {
var username = $("input[placeholder='Username']").val();
if(username.length <3 || username.length>20) {
$("#username_taken").html("Username must be between 3-20 characters!");
usernameFlag = true;
}
else if(username != null) {
$.ajax({
type: "POST",
url: "/data/validate_username",
data: username,
success: function(isValid) {
if(!isValid) {
$("#username_taken").html("The username has already been taken!");
usernameFlag = true;
}
},
error: function() {
$("#username_taken").html("Could not verify username from server!");
}
});
}
});
На стороне сервера я написал RestController для обработки этого запроса и предоставления данных о том, существует ли пользователь или нет.
// necessary imports done...
@RequestMapping("/data")
@RestController
public class UserAccountRest {
@Autowired
private UserAccountService userAccountService;
@PostMapping("/validate_username")
public boolean validateUsername(String username) {
return !userAccountService.accountExists(new UserAccount(username));
}
}
Обычно Spring автоматически заполняет параметры, такие как имя пользователя, если это была форма отправки.Но здесь возникает состояние 500 Internal Server Error, и в консоли говорится, что id не должен быть нулевым.Это означает, что имя пользователя не заполнено.
Возможно, я мог бы использовать объект HttpRequest в параметре и получить из него имя пользователя.Но есть ли способ настроить так, чтобы имя пользователя заполнялось напрямую?