欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringMVC学习笔记(四)

程序员文章站 2022-07-15 11:42:01
...

SpringMVC(四)

  • SpringMVC数据的格式化
    以Date格式为例
    配置:
    <mvc:annotation-driven></mvc:annotation-driven>

在类变量处用注解标注

@DateTimeFormat(pattern="yyyy-mm-dd")
private Date birth;
//pattern为输入样式
例2:
@NumberFormat(pattern="#,###,###.#")
输入:1,234,567,8
输出:1234567.8
  • 当类型转换失败时,如何得到错误消息
    DataBinder会把错误信息放入到BinderResult里面,则可以在目标方法加入形参 BindingResult result
    通过result的内置方法可以得到错误信息。
@RequestMapping(value="/emp",method=RequestMethod.POST)
	public String save(Employee employee,BindingResult result) {
		
		if(result.getErrorCount() > 0) {
			System.out.println("出错啦!!");
			
			for(FieldError error:result.getFieldErrors())
				System.out.println(error.getField()+":"+error.getDefaultMessage());
		}
		
		System.out.println("save:"+employee);
		employeeDao.save(employee);
		return "redirect:/emps";
	}
  • JSR303数据校验
    JSR303 通过在bean属性上标注类似于@NotNull、@Max等标准的注解指定校验规则,并通过标准的验证接口对Bean进行验证
    HibernateValidator是JRS303的一个参考实现,除支持所有标准的校验注解外,还支持以下扩展注解。
注解 功能
@Email 被注释的元素必须是电子邮箱地址
@Length 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串必须为非空
@Range 被注释的元素必须在合适的范围内

JSR 303校验方法:
1、导入hibernate Validator 的jar包,加入hibernate Validator 验证框架
2、在SpringMVC 配置文件中添加<mvc:annotation-driven/>
3、需要在bean的属性上添加对应的注解
4、在目标方法bean类型的签名添加@Valid注解

public String save(@Valid Employee employee,BindingResult result){
...
}
注意!!:需校验的Bean对象和其绑定结果对象或错误对象是成对出现的,它们之间不允许声明其他的入参
  • SpringMVC错误消息的显示及国际化,错误后指向页面
    -显示:可通过<form:erroes path="字段名">显示错误信息
    -指向页面:通过BindingResult的判断来进行指向页面的指定,必要可进行表单回显。
public String save(@Valid Employee employee,BindingResult result,Map<String,Object> map) {
		
		if(result.getErrorCount() > 0) {
			map.put("departments", departmentDao.getDepartments());
			map.put("employees", employeeDao.getAll());
			return "add";
		}

-定制国际化错误信息显示
当一个属性校验失败后,校验框架会为该属性生成4个消息代码,这些代码以校验注解类名为前缀,结合modelAttribute、属性名及属性类型名生成多个消息代码。
当使用SpringMVC标签显示错误消息时,SpringMVC会查看WEB上下是否装配了对应的国际化消息,如果没有,则会显示默认的错误消息,否则使用国际化消息。
1、创建properties文件定制
格式:
键:校验注解名 . 类名(首字母小写). 属性名
值:提示的消息
2、配置国际化资源文件
SpringMVC配置文件中:
例:errorsmsg.properties

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
		<property name="basename" value="errorsmsg"></property>
	</bean>

提示消息的国际化
若数据类型转换或数据格式转换时发生错误,或该有得参数不存在,或调用处理方法时发生错误,都会在隐含模型中创建错误消息。其错误代码前缀说明如下:
-required:不要参数不存在。如@RequiredParam(“param1”)标注了一个入参,但该参数不存在
-typeMismatch:在数据绑定时,发生数据类型不匹配的问题
-methodInvocation:SpringMVC在调用处理方法时发生了错误