thymeleaf RequestMapping

newUser()

Mitglied
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
 

newUser()

Mitglied
<!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}" th:eek:bject="${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}" th:placeholder="'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}" th:placeholder="'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}" th:placeholder="'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()

Mitglied
@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

Super-Moderator
Mitarbeiter
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()

Mitglied
Eine Frage hätte ich dazu noch.
Wenn ich auf der Login Seite ganz unten einen Link
HTML:
 th:href="@{/Register}"
habe und in dem Register file (s. oben) bei
HTML:
 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?
 

Neue Themen


Oben