2016-07-01 14 views
1

Mein Ziel ist die Autorisierung des Benutzers über die Handhabung von Login und Passwort. Ich habe versucht, this example zu reproduzieren, aber mit Problem konfrontiert.Spring MCV: Dateneingabe nicht möglich

Ich habe eine Entity Benutzer Klasse:

@DynamicUpdate 
public class EntityUser 
{ 
    String login; 
    String password; 

    public EntityUser() {} 

    public EntityUser 
    (
      String login, 
      String password 
     ) 
    { 
     this.login = login; 
     this.password = password; 
    } 

    public String getLogin() { 
     return login; 
    } 

    public void setLogin(String login) { 
     this.login = login; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 
} 

Das ist mein .jsp Dateifragment ist:

<form action="#" th:action="@{/loginCheck}" th:object="${user}" method="post"> 
      <table border="1" width="30%" cellpadding="3"> 
       <thead> 
        <tr> 
         <th colspan="2">Login Here</th> 
        </tr> 
       </thead> 
       <tbody> 
        <tr> 
         <td>User Name</td> 
         <td><input type="text" th:field="*{login}"/></td> 
        </tr> 
        <tr> 
         <td>Password</td> 
         <td><input type="password" th:field="*{password}"/></td> 
        </tr> 
        <tr> 
         <td><input type="submit" value="Login" /></td> 
         <td><input type="reset" value="Reset" /></td> 
        </tr> 
       </tbody> 
      </table> 
     </form> 

Und das ist Fragment meiner Controller.java Klasse:

@RequestMapping(value = "/loginCheck", method = RequestMethod.GET) 
    public String userForm(Model model) 
    { 
     EntityUser user = new EntityUser(); 
     user.setLogin("login"); 
     user.setPassword("password"); 
     model.addAttribute("user", user); 

     System.out.println(user.getLogin()); 
     System.out.println(user.getPassword()); 

     return "/loginCheck"; 
    } 

    @RequestMapping(value = "/loginCheck", method = RequestMethod.POST) 
    public String processUser(@ModelAttribute(value="user") EntityUser user) 
    { 

     System.out.println(user.getLogin()); 
     System.out.println(user.getPassword()); 

     loginInfo = "Jakarta"; 
     return "redirect:/controllers"; 
    } 

Nachdem die Werte Eingang und Schaltfläche „Senden“ gibt es keine GET oder POST-Methode genannt (es gab keine Abzüge in der Konsole) gedrückt wird, und die Seite/#

Auf der anderen Seite bewegt, wenn ich ersetzen form action="#" zu form action="/HelloSpringMVC/loginCheck", die POST-Methode aufgerufen wird, aber beide Strings gedruckt sind "null"

Also, was ist da los? Jeder weiß es?

EDITED: Hier sind meine pom.xml und web.xml Dateien.

+0

Es sieht nicht so aus, als würde thymeleaf verwendet, um die Eingabewerte an das Benutzerobjekt in Ihrem Modell zu übergeben. Sie versuchen, eine Mischung aus Ansichtstypen zu verwenden. JSP und Thymoleaf. Wahrscheinlich möchtest du bei dem einen oder anderen bleiben. Ich schlage vor, mit Thymeliaw zu bleiben und die Lösung so zu bearbeiten. Können Sie die Klassen pom.xml und MVC config einbeziehen? –

+0

Pom.xml und web.aml werden hinzugefügt –

Antwort

0

Ihre pom.xml hat nicht die Spring-Boot-Starter-Thymeleaf-Abhängigkeit, daher werden die thymeleaf-Tags nicht in Ihren html/jsp-Vorlagen behandelt. Fügen Sie die thymeleaf Starter Abhängigkeit in Ihrem pom.xml und neu zu erstellen:

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-thymeleaf</artifactId> 
    </dependency> 

Thymeleaf automatisch für Vorlagen mit .html in src/main/resources/templates aussehen wird. Sie können die Standardeinstellungen anpassen, indem Sie src/main/resources/application.properties bearbeiten/erstellen und die in http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html definierten Anwendungseigenschaften von spring.thymeleaf. * Hinzufügen und diese für Ihre eigenen Anforderungen anpassen.