在同一页面上显示错误或成功消息

时间:2019-01-16 13:42:13

标签: html spring parameters thymeleaf

这是我第一次在这里发表文章,因为我无法弄清问题所在,请记住,我对Spring不太熟悉,并且不擅长Java和一般的编码。

我正在尝试使用Java Spring对Server应用程序进行编程,您可以在其中创建具有特定角色的其他帐户。如果帐户创建成功或失败,我希望我的用户能够在同一页面上看到成功或错误消息。

现在我正在使用https://spring.io/guides/gs/securing-web/中的error.param th:if标记 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 :(得分:0)

您可以执行以下操作:

@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";
}

您可以使用“成功”和“错误”这两个键来检索页面上的消息