Ich habe einen Controller, in dem ich eine GET-Methode habe, die ein Formular-POJO anzeigt, das durch ein entsprechendes POST eingefangen werden soll. Wenn jedoch die POST-Anforderung ausgeführt wird, wird das Formular-POJO erstellt, aber nie ausgefüllt, und es werden keine Fehler angezeigt (außer Validierungsfehler für die Nullen).
Ich verwende Spring 3.0.
@Controller
public class UserController {
@RequestMapping(value = "/register", method = RequestMethod.GET)
public ModelAndView renderRegisterForm(
@ModelAttribute("registerForm") UserRegisterForm registerForm) {
ModelAndView mav = new ModelAndView("user.register");
mav.addObject("registerForm", registerForm);
return mav;
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public ModelAndView registerForm(
HttpServletRequest request,
@Valid @ModelAttribute("registerForm") UserRegisterForm registerForm,
BindingResult results) {
// All fields in registerForm are null, results has errors for the @NotNull annotations
return new ModelAndView("user.register");
}
}
Meine Ansicht ist recht einfach und verwendet Spring Forms, um das Formular zu erstellen:
<form:form cssClass="registerForm" modelAttribute="registerForm" method="post" action="/register">
<div class="inputContainer">
<form:label path="name">
<spring:message code="user.edit.name"/>
</form:label>
<form:input path="name"/>
<form:errors path="name" cssClass="error"></form:errors>
</div>
<div class="inputContainer">
<form:label path="email">
<spring:message code="user.edit.email"/>
</form:label>
<form:input path="email"/>
<form:errors path="email" cssClass="error"></form:errors>
</div>
<div class="inputContainer">
<form:label path="password">
<spring:message code="user.edit.password"/>
</form:label>
<form:password path="password"/>
<form:errors path="password" cssClass="error"></form:errors>
</div>
<div class="inputContainer">
<form:label path="repeatPassword">
<spring:message code="user.edit.repeatPassword"/>
</form:label>
<form:password path="repeatPassword"/>
<form:errors path="repeatPassword" cssClass="error"></form:errors>
</div>
<div class="submit-button">
<input type="submit" value="<spring:message code="register"/>"/>
</div>
</form:form>
und das Formular selbst...
@FieldMatchList({@FieldMatch(first="password", second="repeatPassword")})
public class UserRegisterForm {
@NotNull
@Size(min = 1, max = 50)
private String name;
@NotNull
@Email
@Size(max=100)
private String email;
@NotNull
@Size(min=6, max=32)
private String password;
@NotNull
@Size(min=6, max=32)
private String repeatPassword;
// Getters and setters...
}
Vielen Dank im Voraus!