这是我第一次在这里发表文章,因为我无法弄清问题所在,请记住,我对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入门指南中获得的登录名,并且似乎不需要任何繁琐的配置即可工作。至少我看不到。
如果有人能帮助我解决问题,我将感到很高兴。 非常感谢。
答案 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";
}
您可以使用“成功”和“错误”这两个键来检索页面上的消息