2 Stimmen

@ModelAttribute-Parameter wird nicht ausgefüllt

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!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X