SpringMVC的JSR303的校验
》数据的校验
>JSR303
>需要导入JSR303:Hibernate Vailidator的jar包
>注解的形式:可以使用@Pattern(regexp)来规定自己的判断形式
>或者是@NotEmpty,@Eamil,@Length…
>在没有使用mvc:annotation-driven:--->需要在Spring容器中定义一个LoclValidatorFactory的bean即可
>@Valid ,@BindingResult
常用方法:
FieldError getFieldError(String field)
List<FieldError> getFieldErrors()
Object getFieldValue(String field)
Int getErrorCount()
>这里将error保存在了 HttpRequest 中至于-->
>这里可以使用form标签例如<form:Errors path="username"/>来在jsp页面中显示错误信息
>显示错误消息用国际化(定制错误消息)
>配置 i18n 和 i18n_en_US.porperties,i18n_zh_CN.porperties
>需要自己来订制 i18n并且 键值式: 注解名+bean类名第一个小写+属性名小写=对应的错误。
NotEmpty.employee.lastName=^^LastName:\u4E0D\u80FD\u4E3A\u7A7A
Email.employee.email=Email\u4E0D\u5408\u6CD5
Past.employee.birth=Birth\u4E0D\u80FD\u5F0F\u8FC7\u53BB\u7684\u65F6\u95F4
>spring-mvc文件中:ResourceBundleMessageSource
》处理JSON:
>加入jackson的jar包
>用$.post 和$.get 或者 $.ajax()
>@ResponseBody 来进行返回属性
原理:
>请求信息->HttpInputMessage->HttpMessageConverter->请求信息->HttpMessageConverter->
HttpOutPutMessage->返回信息
>在加入JackSon的Jar包时会自动加上一个MappingJackson2HttpMessageConverter:HttpMessageConverter实现类
>@RequestBody放在属性上 ,这个将信息的注入,是入参
>@ResponseBody放在方法上,是要得到返回值的。
>在进行映射的时候会自动的在 HttpMessageConverter 实现类中进行数据的转换
》国际化:
1. 在页面上能够根据浏览器语言设置的情况对文本(不是内容), 时间, 数值进行本地化处理
2. 可以在 bean 中获取国际化资源文件 Locale 对应的消息
3. 可以通过超链接切换 Locale, 而不再依赖于浏览器的语言设置情况
解决:
4. 使用 JSTL 的 fmt 标签
5. 在 bean 中注入 ResourceBundleMessageSource 的示例, 使用其对应的 getMessage 方法即可
6. 配置 SessionLocalResolver 和 LocaleChangeInterceptor
<!-- 配置SessionLocaleResource -->
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
</bean>
<!-- 配置国际化资源文件 -->
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="i18n"></property>
</bean>
<mvc:interceptors>
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
</mvc:interceptors>
<a href="i18n?locale=zn_CH"> 中文</a>
<br><br>
<a href="i18n?locale=en_US"> 英文</a>