как работать с не-jsp методами в весеннем загрузочном контроллере, когда пользователь обновляет - PullRequest
0 голосов
/ 30 октября 2019

Я только начал работать над java spring boot несколько дней назад, и в настоящее время я работаю над Spring Boot Web Application. До сих пор у меня есть Signup, Singin и Dashboard(Home Page). При успешной регистрации пользователя я перенаправляю пользователя на страницу входа, при успешной регистрации пользователя я перенаправляю пользователя на Dashboard.
Проблема в том, что при загрузке страницы регистрации я вызываю метод register() с @RequestMapping, полный методниже.
Примечание: Слова со всеми заглавными буквами являются статическими строками.

@RequestMapping(REGISTER)
public String register() {
    System.out.println("Register Working!!!!");

    return REGISTER;
}

Здесь в приведенном выше методе URL становится http://localhost:8080/register Но на странице регистрации / регистрации, когда пользователь нажимает кнопку «Зарегистрироваться», я вызываю другой метод с именем registerUser(Users user) полный метод ниже

@PostMapping("registerUser")
public ModelAndView registerUser(Users user) {
    ModelAndView mv = new ModelAndView();
    user.setIpAddress(AppUtils.getCurrentIp());

    if (isUserByUsernamePresent(user.getUsername()) || isUserByEmailPresent(user.getEmail())) {
        mv.setViewName(REGISTER);
        mv.addObject(MESSAGE_TYPE_ST, MESSAGE_TYPE_DANGER);
        mv.addObject(MESSAGE_Body_ST, "This username or email alreary exit!");
    } else {
        repo.save(user);
        Users tempUser = getUserDetail(user, "RegisterUser");
        if (user.getUsername().equals(tempUser.getUsername())) {
            mv.setViewName(INDEX);
            mv.addObject(MESSAGE_TYPE_ST, MESSAGE_TYPE_SUCCESS);
            mv.addObject(MESSAGE_Body_ST, "You have successfully created an account! check your email to confirm your registration");
        } else {
            mv.setViewName(REGISTER);
            mv.addObject(MESSAGE_TYPE_ST, MESSAGE_TYPE_DANGER);
            mv.addObject(MESSAGE_Body_ST, "Something went wrong, please try again or contact us!");
        }
    }

Так что здесь registerUser не является страницей jsp, нометод регистрации нового пользователя. Теперь URL становится http://localhost:8080/registerUser. В это время, если пользователь обновляет страницу, пользователь получает кучу кода ошибки, поскольку registerUser не является страницей jsp, поэтому пользователь не может вызвать ее напрямую.

ЗдесьВ этом сценарии возникает мой вопрос, как бороться с http://localhost:8080/registerUser, если это не страница JSP. Одно из решений, которое я имею в виду, это то, что у меня должен быть только один метод register или registerUser и проверка, если пользовательский объект имеет значение null, тогда рассмотрим вызов загрузки страницы ИЛИ, если пользовательский объект не равен null, то вызов сделан изкнопка регистрации, чтобы я мог выполнить сохранение пользователя.

Если есть более хороший подход, пожалуйста, дайте мне знать. Любые усилия будут оценены. Если необходимо предоставить больше кода, дайте мне знать.

Редактировать: @PostMapping("registerUser") Я устанавливаю индекс в качестве имени представления, если регистрация прошла успешно, ИЛИ зарегистрируйтесь, если регистрация не удалась. Так должен ли URL быть индексом или регистром соответственно?

1 Ответ

0 голосов
/ 30 октября 2019

Вы можете сделать это, чтобы устранить ошибку обновления. Из метода registerUser, как только вы завершите свою обработку, вызовите метод GET (перенаправить на контроллеры другой метод GET), чтобы перенаправить на нужную страницу, поэтому, если вы обновите страницу, вызов для этого метода get не post (registerUser)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...