在互聯網上搜索並嘗試了不同的解決方案,但不知何故,沒有人在我的情況下工作。基於html輸入創建並保留一個新用戶。 Spring MVC,JPA Hibernate,Thymeleaf
我有以下的HTML模板的視圖,你應該自己註冊:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<link rel="stylesheet" type="text/css" th:href="@{/css/style.css}" />
<!-- Page title -->
<title> Register</title>
</head>
<body>
<form action="#" th:action="@{/registeruser}" th:object="${user}" method="post">
<input type="text" th:field="*{username}" />
<input type="text" th:field="*{email}" />
<input type="text" th:field="*{password}" />
<input type="submit" />
</form>
</body>
</html>
也在這裏是控制器:
@Controller
public class RegisterController {
@Autowired
private UserService userservice;
@Autowired
private RoleService roleService;
@RequestMapping(value = "/register", method = RequestMethod.GET)
public String regUser(Model model) {
User u = new User();
u.setUsername("username");
u.setPassword("password");
u.setEmail("email");
Set<Role> userRoles = new HashSet<>();
userRoles.add(roleService.findRoleByName("ROLE_USER"));
u.setRoles(userRoles);
System.out.println("test");
model.addAttribute("user", u);
return "register";
// return new ModelAndView("register", "command", new User());
}
@RequestMapping(value = "/registeruser", method = RequestMethod.POST)
public String addUser(@ModelAttribute(value = "user")User user,
ModelMap model) {
model.addAttribute("username", user.getUsername());
model.addAttribute("password", user.getPassword());
model.addAttribute("email", user.getEmail());
System.out.println("user " + user.getUsername() + "got registered, here a list of all users: ");
return "login";
}
}
控制檯打印測試工作在regUser()方法,但不知何故,在addUser()方法打印的控制檯不起作用,所以我猜它不會被觸發? 此外,視圖工作完美,我提交到登錄頁面後重定向,但這也是defaultSuccesFulUrl,所以它可能意味着什麼。
有點沮喪在這一個,所以它會很好,如果你能幫助。 在此先感謝。
嘗試刪除'行動=「#」' – bphilipnyc
刪除它,行爲沒有改變。 – Zytro