对于表单的验证一直是个难的问题,看别人的代码发现了,可以用alidate jar 与hibernate-alidate jar来实现验证,可以对表单数据进行封装,然后给spring mvc controller上加上@Valid对字段进行验证,如何配置:需要validate jar ,hibernate alidate jar ,jboss-logging jar ,classmate jar需要在springmvc 的配置中加上alidate的配置加上如下内容:
<mvc:annotation-driven validator="validator" conversion-service="conversion-service" />
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
<!--不设置则默认为classpath下的 ValidationMessages.properties -->
<property name="validationMessageSource" ref="validatemessageSource"/>
</bean>
<bean id="conversion-service" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />
<bean id="validatemessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:validatemessages"/>
<property name="fileEncodings" value="utf-8"/>
<property name="cacheSeconds" value="120"/>
</bean>
给要验证的属性上加上@NotNull验证非空,@NotBlank验证是否为空字符串,@Pattern(regexp="^1[3|4|5|7|8]{1}[0-9]{9}$",message="手机号错误")正则表达式验证。
controller上如下:例如:
@RequestMapping("/userget.json")
@ResponseBody
public String getUser(@Valid User user,Errors error){
System.out.println("name="+user.getName()+",phone="+user.getPhone()+";");
if(error.hasErrors()){
for(int i=0;i<error.getErrorCount();i++){
System.out.println("message="+error.getAllErrors().get(i).getDefaultMessage());
}
return error.getAllErrors().get(0).getDefaultMessage();
} else {
return null;
}
}
就这样搞定了。