2017-06-13 6 views
0

Im ganzen Internet gesucht und verschiedene Lösungen versucht, aber irgendwie arbeitete niemand in meinem Fall.Erstellen und beibehalten eines neuen Benutzers basierend auf HTML-Eingabe. Spring MVC, JPA Hibernate, Thymeleaf

Ich habe folgende HTML-Vorlage für einen Blick, wo Sie sich registrieren sollten:

<!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> 

auch hier ist die Steuerung:

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

Die Konsole Drucktest im regUser() Methode funktioniert aber irgendwie funktioniert der console print in der addUser() -Methode nicht, also schätze ich, dass er nicht ausgelöst wird? Auch die Ansicht funktioniert perfekt und ich werde nach dem Absenden auf der Anmeldeseite umgeleitet, aber das ist auch die defaultSuccesFulUrl, so dass es wahrscheinlich nichts bedeutet.

Irgendwie frustriert über diese, so wäre es wirklich schön, wenn Sie helfen könnten. Vielen Dank im Voraus.

+0

Versuchen 'action = "#" Entfernen' – bphilipnyc

+0

es entfernt Das Verhalten hat sich nicht geändert. – Zytro

Antwort

0

Versuchen Sie, action="#" in Ihrem Formular zu entfernen. Dies kann auf die durch Thymeleaf erzeugte treten.

Abgesehen:

  • Sie können für Ihre Zuordnungen @GetMapping und @PostMapping als Abkürzung benutzen.

  • Sie wollen werden es input type="password"

  • Sie ModelMap

  • Verwenden @Slf4j und eine Protokollierung Model ändern System Ihrer Wahl verwenden können

    statt
+0

danke für diese Ratschläge, das Entfernen der Anweisung "action =" # "" hat nicht geholfen. – Zytro

0

Ihre POST ändern Methode zu

@RequestMapping(value = "/registeruser", method = RequestMethod.POST) 
public String addUser(User user) { 
... 

auch besser ist, wenn in Ihrem einreichen, sagt eine Taste

<button type="submit">Submit</button> 

Und wie gesagt bphlilipnyc die action = "#" entfernen

Verwandte Themen