Отображение сообщения об ошибке или успехе на той же странице - PullRequest
0 голосов
/ 16 января 2019

я впервые здесь пишу, так как не смог разобраться в проблеме, имейте ввиду, что я довольно новичок в Spring и не очень хорош в Java и кодировании в целом.

Я пытаюсь запрограммировать серверное приложение на Java Spring, где вы можете создавать разные учетные записи с определенными ролями. Я хочу, чтобы мои пользователи могли видеть сообщение об успехе или ошибке на той же странице, если создание учетной записи прошло успешно или не удалось.

Сейчас я использую error.param th: if tag из https://spring.io/guides/gs/securing-web/ конкретный код в моем HTML-файле:

<div id="error" th:if="${param.error}">
        Benutzername existiert bereits.
</div>
<div id="success" th:if="${param.success}">
        Das Konto wurde erfolgreich erstellt.
</div>

Что работает, когда я вручную ставлю «успех» или «ошибка» за своим URL.

Я сопоставляю свой POST с базой данных этим методом:

@PostMapping("/create/lieferant/fahrer")
public String submitDriver(@ModelAttribute Driver driver){
    if(userRepository.existsByUsername(driver.getUsername())){
        return "create/lieferant/fahrer?error";
    }
    Driver d = new Driver();
    User n = new User();
    Role r = new Role();
    d.setName(driver.getName());
    d.setTelnum(driver.getTelnum());
    d.setUsername(driver.getUsername());
    n.setUsername(driver.getUsername());
    n.setPassword(encoder().encode(driver.getPassword()));
    r.setUsername(driver.getUsername());
    r.setAuthority("LIEFERANT");
    userRepository.save(n);
    driverRepository.save(d);
    roleRepository.save(r);
    return "create/lieferant/fahrer?success";
}

Идея состоит в том, чтобы проверить, зарегистрировано ли уже имя пользователя и, если да, вернуть ошибку create / lieferant / fahrer ?, но там указано

Ошибка при разрешении шаблона "create / lieferant / fahrer? Error", шаблон может не существовать или может быть недоступен для любого из настроенных Шаблон резолверов

и то же самое для? Успеха.

Чего я не понимаю, так это: он работает для входа в систему, который я получил из руководства по началу работы с Spring, и, похоже, работает без каких-либо тяжелых настроек или чего-то подобного. По крайней мере, я не вижу.

Я был бы рад, если бы кто-нибудь мог помочь мне разобраться в моей проблеме. Большое спасибо.

1 Ответ

0 голосов
/ 16 января 2019

Вы можете сделать что-то вроде этого:

@PostMapping("/create/lieferant/fahrer")
public ModelAndView submitDriver(@ModelAttribute Driver driver){
    ModelAndView mav = new ModelAndView();
    mav.setViewName("create/lieferant/fahrer");
    try {
        if(userRepository.existsByUsername(driver.getUsername())){
            return "create/lieferant/fahrer?error";
        }
        Driver d = new Driver();
        User n = new User();
        Role r = new Role();
        d.setName(driver.getName());
        d.setTelnum(driver.getTelnum());
        d.setUsername(driver.getUsername());
        n.setUsername(driver.getUsername());
        n.setPassword(encoder().encode(driver.getPassword()));
        r.setUsername(driver.getUsername());
        r.setAuthority("LIEFERANT");
        userRepository.save(n);
        driverRepository.save(d);
        roleRepository.save(r);
        mav.addObject("success", "All was ok");
    } catch (Exception e) {
        mav.addObject("error", "Error message to change");
    }

    return "create/lieferant/fahrer?success";
}

Вы можете получать сообщения на странице с помощью двух клавиш «success» и «error»

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