sam*_*pot 2 validation spring spring-roo
我成功地完成了一个新的roo项目,但是现在我遇到了验证工作登录页面的问题.在将控制传递给我的控制器之前,似乎验证器正在窒息.我从未有机会检查BindingResult.我在这里和网上检查了几个类似的问题,我的代码似乎符合他们正在做的事情.
首先提交表单时得到的错误(如果我通过验证,我没有收到错误消息).在这种情况下,我没有达到密码的最小长度:
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)
Run Code Online (Sandbox Code Playgroud)
我的实体验证设置如下:
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;
}
Run Code Online (Sandbox Code Playgroud)
这是我的标记:
<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>
Run Code Online (Sandbox Code Playgroud)
和控制器:
@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";
}
}
Run Code Online (Sandbox Code Playgroud)
并且万一重要,webmvc-config.xml中生成的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"/>
Run Code Online (Sandbox Code Playgroud)
一直把我的头发拉了几个小时,我无法弄清楚它可能是什么.谢谢阅读!
Sco*_*ick 13
在您的控制器处理程序方法中,尝试移动BindingResult参数,使其紧跟在命令参数之后.Spring查找命令对象参数和BindingResult参数,以便在处理程序方法签名中配对.
| 归档时间: |
|
| 查看次数: |
4812 次 |
| 最近记录: |