参考:
http://my.oschina.net/u/241255/blog/297726
1.准备工作(依赖jar)
2.配置要求
<mvc:annotation-driven validator="validator" />
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
<!-- 如果不加默认到 使用classpath下的 ValidationMessages.properties -->
<property name="validationMessageSource" ref="messageSource"/>
</bean>
<!-- 国际化的消息资源文件(本系统中主要用于显示/错误消息定制) -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<!-- 在web环境中一定要定位到classpath 否则默认到当前web应用下找 -->
<value>classpath:resources/error</value>
</list>
</property>
<property name="useCodeAsDefaultMessage" value="false"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="cacheSeconds" value="60"/>
</bean>
===================error.properties===================================
3.实体类
4.页面
1.加入tag
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
<sf:form
modelAttribute="user" id="menuForm" name="menuForm" action="tt/addUser">
<table class="l-table-edit page-table">
<tr>
<td></td>
</tr>
</table>
<table class="l-table-edit page-table">
<tr>
<td><sf:label path="username">UserName:</sf:label>
</td>
<td><sf:input path="username" />
</td>
<td><sf:errors path="username" class="errors" />
</td>
</td>
<td></td>
</tr>
4.JAVA类处理
@RequestMapping(value="/addUser")
public String addUser(
@Validated({First.class,Second.class}) @ModelAttribute("user") TbSysUser user ,BindingResult bindreResult,String ctype,HttpServletRequest request,Errors errors) throws Exception{
try {
if(!bindreResult.hasErrors()){
user.setPassword(StringUtil.string2MD5(user.getPassword()));
userService.Add(user);
return "ok";
}
return "sys/user_add";
} catch (Exception e) {
throw e;
}
}
@ModelAttribute("user")
private TbSysUser getTbSysUser(){
return new TbSysUser();
}
5.AJAX处理
@RequestMapping(value="/addUser")
public String addUser(@Validated({First.class,Second.class}) @ModelAttribute("user") TbSysUser user ,BindingResult bindreResult,Errors errors,String ctype,HttpServletRequest request,HttpServletResponse response) throws Exception{
try {
if(!bindreResult.hasErrors()){
user.setPassword(StringUtil.string2MD5(user.getPassword()));
userService.Add(user);
response.getWriter().print("ok");
} else {
Map<String, Object> map = new HashMap<String, Object>();
List<FieldError> fieldErrors = errors.getFieldErrors();
for (int i = 0; i < fieldErrors.size(); i++) {
map.put(fieldErrors.get(i).getField(), fieldErrors.get(i).getDefaultMessage());
}
response.getWriter().print("validateError!@#$"+JSONArray.fromObject(map));
throw new VerifyException("verror","message");
}
return null;
} catch (Exception e) {
throw new VerifyException("verror","message");
}
JS处理
case(500):
var errorStr = jqXHR.responseText.toString();
if(errorStr.indexOf("validateError") != -1 ){//validateError
var errorMessage = errorStr.split("!@#$")[1];//验证错误信息详情
var errorJson = eval(errorMessage);//转json
var inputName,errorDetail,top,left;
for(var i=0; i<errorJson.length; i++) { //遍历
for( var key in errorJson[i]){
inputName = key;
errorDetail = errorJson[i][key];
if($(":input[name='"+inputName+"']").length != 0){
var parentDiv = $(":input[name='"+inputName+"']").parent();
top = $(parentDiv).offset().top;
left = $(parentDiv).width()+$(parentDiv).offset().left+15;
$(":input[name='"+inputName+"']").parent().after("<span style='position:absolute; top:"+top+"px;left:"+left+"px '>"+errorDetail+"</span>");
}
}
}
}
$.ligerDialog.error("服务器系统内部错误");
break;
######
######或者你去参考
http://my.oschina.net/u/241255/blog/297726