数据校验
注解和声明
- 在需要启用数据校验的参数前面加注解:@Validated
- 在实体类的属性上注解:
@NotBlank表示不能为null,但是只能用于String类型
@NotEmpty表示不能为null,同时 size>0
@NotNull表示不能为Null
@Size(min=2)表示字符串最小的长度
@DecimalMin(“0.0”)
@DecimalMax(“1000.0”)表示对于Double类型的数据的范围
@DateTimeFormat(pattern=”yyyy-MM-dd”)表示日期的字符串指定标准格式
@Past表示日期不能无效
@Length(min=4)表示字符串长度不能小于4位
……百度搜索 - 错误提示信息的设置,可以在注解后面加(message=”…”),也可以在国际化资源文件中配置(注意格式:注解名 . 对象 . 属性名 = …)
- 在该参数后面紧跟着写上Errors errors,中间不要再写其他的参数
if(errors.hasFieldErrors()) {
return "有错误字段就转发到指定的页面并提示错误信息";
}
前端页面输出
- 导入springMvc的标签库
<%@ taglib prefix="spForm" uri="http://www.springframework.org/tags/form" %>
- 普通表单要改成springMvc提供的表单
<sp:form modelAttribute="提交的对象实例(比如一本书book)">...</sp:form>
- 在表单中输出错误的字段信息
<sp:errors path="字段名" />
数据类型转换
自定义转换器
创建一个转换器类实现Converter接口:
//接口中的参数String表示被转换的数据(字符串)
//Object表示要转换成的目标对象
public class PhoneNumberConverter implements Converter<String, Object>{
@Override
public PhoneNumber convert(String arg) {
//可以作一些逻辑判断arg是否为空
//正则表达式判断格式
//具体的转换操作
//否则可以抛出异常来处理或提示错误信息
......
}
}
xml配置
在springMvc.xml中配置:
<!-- 配置转换器驱动 -->
<mvc:annotation-driven conversion-service="conversionService" />
<!-- 配置一个类型转换器服务对象,由该类型转换器提供类型转换的服务
而FormattingConversionService本身就具备基本数据类型转换的能力
我们再通过配置其converters属性增加我们自己的类型转换器
-->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.bwf.term14.book.web.converter.自定义转换器类" />
...<!-- 可以有多个 -->
</list>
</property>
</bean>