错误消息要用jstl 来接收,JSP 页面
Users.java
public class Users { private Long userKey; @NotEmpty(message = "name不能为null") @Size(max=25) private String name; @NotEmpty @Email(message = "email不符合规则") private String email; '' '' '' get set 方法略 }
Controller
@RequestMapping("save") public String save( @Valid Users users,BindingResult result) { System.out.println("UserKey:"+users.getUserKey()); System.out.println("Email:"+users.getEmail()); System.out.println("Name:"+users.getName()); if(result.hasErrors()){ List ls=result.getAllErrors(); for (int i = 0; i < ls.size(); i++) { System.out.println("error:"+ls.get(i)); } } return "adduser"; }
用注解式验证之后错误消息也能打印出来了,现在的问题是怎么在jsp页面用JSTL接收每个验证不成功的错误消息呢?
问题补充:下面是 System.out.println("error:"+ls.get(i)); 打印出来的信息,我直接空提交的得到的错误信息我不要解析这些错误消息 然后塞到request里面,spring MVC 不是有所有东西都塞到 ModeMap里面了吗, 这些东西应该也在里面吧, 现在问题是我怎么样用JSTL 得到。
error:Field error in object 'users' on field 'name': rejected value []; codes [NotEmpty.users.name,NotEmpty.name,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [users.name,name]; arguments []; default message [name]]; default message [name不能为null] error:Field error in object 'users' on field 'email': rejected value []; codes [NotEmpty.users.email,NotEmpty.email,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [users.email,email]; arguments []; default message [email]]; default message [may not be empty]
error:Field error in object 'users' on field 'name': rejected value []; codes [NotEmpty.users.name,NotEmpty.name,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [users.name,name]; arguments []; default message [name]]; default message [name不能为null]
error:Field error in object 'users' on field 'email': rejected value []; codes [NotEmpty.users.email,NotEmpty.email,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [users.email,email]; arguments []; default message [email]]; default message [may not be empty]
我不知道前台页面该怎么去取,我现在就想在jstl里面这样来接收 比如:${errors.name} 显示 name不能为null${errors.email} 显示 may not be empty
引用
List err=result.getFieldErrors(); FieldError fe; String field; String errorMessage; for (int i = 0; i < err.size(); i++) { fe=err.get(i); field=fe.getField();//得到那个字段验证出错 errorMessage=fe.getDefaultMessage();//得到错误消息 System.out.println("错误字段消息:"+field +" : "+errorMessage); } // 打印结果
错误字段消息:email : may not be empty错误字段消息:name : name不能为null
后台可以得到具体错误消息了, 我不想解析这些东西,spring MVC 应该已经把这些消息传送到显示层了,问题现在我不知道前台页面怎么读取
jsp 页面要想得到spring BindingResult 里面的错误消息需要利用request对象实现。最常见的写法如下:${org.springframework.validation.BindingResult.users} 取到的应该是个错误集合 你在向下延伸下去集合里的属性应该就可以
表单 path属性