Spring mvc之JSR303框架实现数据格式化,数据验证,资源国际化
2015-11-06 23:43
841 查看
今天使用JSR303框架实现 mvc的3个重要的部分
数据格式化
数据验证
资源国际化
要使用到的3个jar包:
hibernate-validator-4.3.2.Final.jar
validation-api-1.0.0.GA.jar
jboss-logging-3.1.4.GA.jar
首先要给 spring mvc配置国际化资源和数据验证资源,配置代码如下
以上配置表名:国际化资源的路径在/WEB-INF/resources/目录下
文件名称,须按约定的名称
- *_en_US.properties 英文
- *_zh_CN.properties 中文
如图:
读取国际化资源后,使用spring标签库可直接进行国际化输出
使用
这样即可实现国际化
配置完毕后,要对实体类进行添加注解实现数据格式化和验证
然后就是对控制器的编码控制,
提交表单前,要进行预添加出来,在resquest范围,放置null的实体类对象。
预添加的方法如下:
前台表单如下处理呢?先添加spring标签库
表单代码:
此事例,仅验证ename和hiredate属性。
项目代码:
链接:http://pan.baidu.com/s/1i3i2COd 密码:dq4f
如有问题,请留言交流.
数据格式化
数据验证
资源国际化
要使用到的3个jar包:
hibernate-validator-4.3.2.Final.jar
validation-api-1.0.0.GA.jar
jboss-logging-3.1.4.GA.jar
首先要给 spring mvc配置国际化资源和数据验证资源,配置代码如下
<!-- 开启注解的功能 加载数据验证配置 --> <mvc:annotation-driven validator="validator"> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> <!-- 配置国际化的资源 --> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basenames"> <list> <value>/WEB-INF/resources/errors</value> <value>/WEB-INF/resources/labels</value> <value>/WEB-INF/resources/messages</value> </list> </property> <property name="cacheSeconds" value="0"></property> </bean> <!--Spring mvc 读取国际化资源 --> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="validationMessageSource" ref="messageSource"></property> </bean>
以上配置表名:国际化资源的路径在/WEB-INF/resources/目录下
文件名称,须按约定的名称
- *_en_US.properties 英文
- *_zh_CN.properties 中文
如图:
读取国际化资源后,使用spring标签库可直接进行国际化输出
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf"%>
使用
<s:message code=""/>标签即可,code写国际化的key值
这样即可实现国际化
配置完毕后,要对实体类进行添加注解实现数据格式化和验证
//此处省略其它属性以及get set和构造函数 @NotNull(message="{error.empmgr.emp.notnull}") @Length(min=5,max=10,message="{error.empmgr.emp.ename.length}") private String ename; @NotNull(message="{error.empmgr.emp.notnull}") @Past(message="{error.empmgr.emp.hiredate.past}") @DateTimeFormat(pattern="yyyy-MM-dd") private Date hiredate;
然后就是对控制器的编码控制,
/**省略其它用不到方法...*/ @RequestMapping("/add") public ModelAndView add(@Valid Emp emp, BindingResult result) { ModelAndView model = new ModelAndView(); if (!result.hasErrors()) { if (iEmpBiz.addEmp(emp)) { model.setViewName("redirect:/emps"); } else { model.setViewName("emp_add"); } } else { model.setViewName("emp_add"); } return model; }
提交表单前,要进行预添加出来,在resquest范围,放置null的实体类对象。
预添加的方法如下:
@RequestMapping("/pre_add") public ModelAndView preadd() { ModelAndView model = new ModelAndView(); model.addObject("emp", new Emp()); model.setViewName("emp_add"); return model; }
前台表单如下处理呢?先添加spring标签库
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf"%>
表单代码:
<sf:form action="add" method="post" commandName="emp"> <table width="500"> <tr> <th><s:message code="lable.empmgr.emp.name" /><sf:input path="ename"/><sf:errors path="ename"/> </th> <th><s:message code="lable.empmgr.emp.sal" /><sf:input path="sal"/></th> <th><s:message code="lable.empmgr.emp.hiredate" /><sf:input path="hiredate"/><sf:errors path="hiredate" /> </th> <th><s:message code="lable.empmgr.emp.job" /><sf:input path="job"/></th> <th><s:message code="lable.empmgr.emp.partment" /><sf:input path="mgr"/></th> </tr> <tr/><td colspan="5"> <input type="submit" value="<s:message code='lable.empmgr.emp.op.add' />" /></td> </tr> </table> </sf:form>
此事例,仅验证ename和hiredate属性。
项目代码:
链接:http://pan.baidu.com/s/1i3i2COd 密码:dq4f
如有问题,请留言交流.
相关文章推荐
- 下载安装JDK,并且配置java环境变量
- java---Java队列和C队列的区别
- Spring mvc之返回jackson和异常处理
- “java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the”错误
- JAVA_SE基础——51.内部类
- java数据类型
- spring mvc生成注册验证码
- java实现数据库导出ECXL表格
- 深入浅出Java三大框架SSH与MVC的设计模式
- SpringMVC使用ResponseBody报406错误
- Spring 知识总结
- Java 引用传递的实验
- Spring测试框架JUnit4.4
- java中接口
- java中的抽象类
- JAVA中3大集合框架队列的使用
- 关于java初学者的心理
- java基本数据类型
- (转)个例子让你了解Java反射机制
- 传智播客 Java基础 day07笔记