# thymeleaf RequestMapping



## newUser() (17. Jun 2017)

Hallo zusammen,

ich habe eine Frage bezüglich des RequestMapping in html mit thymeleaf.
Ich habe eine login Seite sowie overview (nach erfolgreichem Anmelden) sowie eine register Seite.
An- und Abmelden funktioniert bereits. Jedoch funktioniert die Registrierung nicht, da die register Seite nicht komplett angezeigt wird.
Wenn ich einen Link th:href="@{/register}" bei login habe und einen Controller mit einer RequestMapping Funktion(value="/register") die die Seite "register" zurückgibt erscheint nur der Text ganz oben im html file, jedoch nicht das, was in
<form th:action="@{/register}">...</form>
steht.
Brauche ich für dafür einen weiteren Controller oder ähnliches (wobei es ja dann auch einen anderen value geben muss) ?

Danke vorab schon mal für eure Hilfe.

Gruß 

Patrick


----------



## mrBrown (17. Jun 2017)

Ohne dein Template und deinen Controller zu sehen, kann man da nichts zu sagen


----------



## newUser() (17. Jun 2017)

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="en">
<head>
    <meta charset="UTF-8"/>
    <link rel="stylesheet" type="text/css" media="all" th:href="@{/css/bootstrap.css}"/>
    <script type="text/javascript" src="/js/bootstrap.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <link rel="stylesheet" type="text/css" media="all" th:href="@{/css/ars.css}"/>
    <title>register</title>
</head>
<body>
<div class="container" th:text="'Welcome on the registration page.'">
    <div class="panel panel-default">
        <form th:action="@{/register}" thbject="${user}" method="POST" autocomplete="off" class="form-horizontal">
            <div class="panel-heading" th:text="'Registration'"></div>
            <div class="panel-body">
                <div class="row form-group">
                    <div class="col-xs-12 col-sm-6">
                        <label>Username</label>
                        <input style="height: 20px; width: 200px; position: relative" name="sername" id="username" type="text" th:field="*{username}" thlaceholder="'Username'" class="form-control"/><br/>
                        <p style="font-size: 20pt; color: #FF1C19" th:each="error : ${#fields.errors('username')}" th:text="${error}">Validation error</p>
                    </div>
                </div>
                <div class="row form-group">
                    <div class="col-xs-12 col-sm-6">
                        <label>Password</label>
                        <input style="height: 20px; width: 200px; position: relative" name="password" id="password" type="password" th:field="*{password}" thlaceholder="'Password'" class="form-control"/><br/>
                        <p style="font-size: 20pt; color: #FF1C19" th:each="error : ${#fields.errors('password')}" th:text="${error}">Validation error</p>
                    </div>
                </div>
                <div class="row form-group">
                    <div class="col-xs-12 col-sm-6">
                        <label>Email</label>
                        <input style="height: 20px; width: 200px; position: relative" name="email" id="email" type="email" th:field="*{email}" thlaceholder="'Email'" class="form-control"/><br/>
                        <p style="font-size: 20pt; color: #FF1C19" th:each="error : ${#fields.errors('email')}" th:text="${error}">Validation error</p>
                    </div>
                </div>
            </div>
            <div class="panel-footer">
                <button name="Submit" value="/register" type="submit" th:text="'Register'" class="btn btn-default">Register</button> &nbsp;
                <button name="Reset" type="reset" th:text="'Reset'" class="btn btn-default">Reset</button>
            </div>
        </form>
    </div>
</div>
</body>
</html>


----------



## newUser() (17. Jun 2017)

@Controller
public class RegistrationController {

  /**
   * Handles GET requests targeted at the register page
   *
   * @Return the welcome page after a successful registration
   */
  @RequestMapping(value = "/register", method = RequestMethod.GET)
  public String showRegistrationPage(WebRequest request, Model model){

    model.addAttribute("user", new User());
    return "register";
  }


----------



## mrBrown (17. Jun 2017)

Du solltest das besser in Code-Tags setzten: [code=Java]//Hier dein Code[/code] bzw [html][/html]

Der Fehler liegt in `<div class="container" th:text="'Welcome on the registration page.'">`.
Mit `th:text` wird der gesamte Inhalt deines divs mit dem gegebenem Text ersetzt - was in dem Fall fast dein gesamter Conent ist.
Für Text solltest du besser entsprechende Tags nehmen, die dann ohne Inhalt sind - in deinem Fall passt vermutlich ein `<h1 th:text="'Welcome on the registration page.'"/>` recht gut


----------



## newUser() (17. Jun 2017)

Vielen Dank für die schnelle Antwort.
Es funktioniert jetzt.


----------



## newUser() (17. Jun 2017)

Eine Frage hätte ich dazu noch.
Wenn ich auf der Login Seite ganz unten einen Link 
	
	
	
	





```
th:href="@{/Register}"
```
 habe und in dem Register file (s. oben) bei 
	
	
	
	





```
th:action="@{/Register}"
```
 sowie beim dazugehörigen Button als value "/register" habe, wie mange ich das mit einem (oder mehreren) Controller? Bisher habe ich dafür den RegistrationController (s. oben), der mich zwar auf die Seite regist umleitet wenn ich bei Login auf den Link dazu gehe, jedoch möchte ich wenn ich die Daten auf regist eingegeben habe auf eine andere Seite (welcome.html) umgeleitet werden (sofern die Registrierung erfolgreich war).
Muss ich eventuell einen zweiten Controller erstellen, der auf den value "/registration" anspricht und somit auch den value des Buttons ändern?


----------



## newUser() (17. Jun 2017)

hat sich erledigt


----------

