Ich habe ein neues Roo-Projekt erfolgreich gestartet, aber jetzt habe ich ein Problem, die Validierung für eine Login-Seite zu arbeiten. Es scheint, dass der Validator erstickt, bevor er die Kontrolle an meinen Controller übergibt. Ich habe nie die Möglichkeit, das BindingResult zu überprüfen. Ich habe einige ähnliche Fragen hier und im Internet untersucht, und mein Code scheint mit dem übereinzustimmen, was sie tun.Spring @ Valid Validator nicht korrekt aufgerufen (Roo, Hibernate)
Zuerst der Fehler, den ich beim Absenden des Formulars bekomme (wenn ich die Validierung überlasse, erhalte ich keine Fehlermeldung). In diesem Fall traf ich nicht die Mindestlänge für das Passwort:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'loginUser' on field 'password': rejected value [b]; codes [Size.loginUser.password,Size.password,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [loginUser.password,password]; arguments []; default message [password],50,5]; default message [Password must be between 1 and 50 characters long]
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
Meine Einheit Validierung ist Setup wie folgt aus:
public class LoginUser {
@NotNull
@NotEmpty
private String username;
@NotNull
@NotEmpty(message = "Password must not be blank.")
@Size(min = 5, max = 50, message = "Password must be between 1 "
+ " and 50 characters long")
private String password;
}
Hier ist mein Markup:
<form:form method="post" commandName="command">
<form:label path="username">Username: </form:label>
<form:input path="username"/>
<form:errors path="username"/>
<form:label path="password">Password: </form:label>
<form:password path="password"/>
<form:errors path="password"/>
<input type="submit"/>
</form:form>
Und die Steuerung:
@ModelAttribute("command")
public LoginUser fbo(){
LoginUser u = new LoginUser();
u.setUserType(UserType.USER);
return u;
}
@RequestMapping(value="/login.htm", method=RequestMethod.POST)
public String doLogin(@Valid LoginUser command,
HttpServletRequest request, BindingResult result
){
if(result.hasErrors()){
return "login";
}
}
An d nur für den Fall es darauf ankommt, die erzeugte XML in webmvc-config.xml:
<!-- The controllers are autodetected POJOs labeled with the @Controller annotation. -->
<context:component-scan base-package="com.tcg.myproject" use-default-filters="false">
<context:include-filter expression="org.springframework.stereotype.Controller" type="annotation"/>
</context:component-scan>
<!-- Turns on support for mapping requests to Spring MVC @Controller methods
Also registers default Formatters and Validators for use across all @Controllers -->
<mvc:annotation-driven conversion-service="applicationConversionService"/>
, meine Haare stundenlang ziehen, und ich kann es konnte nicht herausfinden, was sein. Danke fürs Lesen!
Warum haben Sie das Spring Security-Add-on nicht einfach verwendet? – bhagyas
Man verwendet nicht einfach Federsicherung. –