SpringMVC深入信息提示(四)
2016-06-05 06:44
316 查看
1.文件配置
从上一节中,我们看到的错误信息的提示都是固定,我们需要是提示信息转换我们想要的信息。这个实现,首先需要我们在src/main/resource下定义messages.properties的文件。这个文件不仅仅是信息配置的信息,同时也是国际化可以配置的地方,我们在稍后的章节中将会学习到国际化。现在我们在messages.properties的文件中添加的信息如下。Size.profileForm.twitterHandle=Please type in your twitter user name Email.profileForm.email=Please specify a valid email address NotEmpty.profileForm.email=Please specify your email address PastLocalDate.profileForm.birthDate=Please specify a real birth date NotNull.profileForm.birthDate=Please specify your birth date typeMismatch.birthDate = Invalid birth date format.Spring的框架中的类DefaultMessageCodesResolver 将会负责去转换错误的信息提示。这个错误信息的配置规格要遵守如下的形式:
• code + "." + object name + "." + field
• code + "." + field
• code + "." + field type
• code
当然除了上面用的配置文件来处理错误信息,我们也可以直接在类中填写,比如:
@Size(min = 2, message = "Please specify a valid twitter handle") private String twitterHandle;
2.日期范围处理
在Java的日期处理中,我们有一个@past的注解,这个确保日期是过去的时期。我们不想用户输入的生日日期是将来某个时间的,这个也是不合理的。所以我们需要自己定义处标签,用于日期的处理。一样的,我们在date包下定义个标签名为PastLocalDate.package masterSpringMVC.date; import javax.validation.Constraint; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import javax.validation.Payload; import java.lang.annotation.*; import java.time.LocalDate; /** * 用户的生日时间处理,输入日期必须是过去的某个时间 * Created by OwenWilliam on 2016/5/15. */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = PastLocalDate.PastValidator.class) @Documented public @interface PastLocalDate { Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default{}; class PastValidator implements ConstraintValidator<PastLocalDate, LocalDate> { public void initialize(PastLocalDate past) { } //判断日期是否是空或是否是过去的 public boolean isValid(LocalDate localDate, ConstraintValidatorContext context) { return localDate == null || localDate.isBefore(LocalDate. now()); } } }
上面的这个方法太简单了,最后我们需要在ProfileForm的birthDate字段添加这个标签。
@NotNull @PastLocalDate private LocalDate birthDate;
3.总结
在这一章节中,我们实现了错误信息提示可以动态变化,就是配置在文件中。同时,我们也做了生日日期的限制处理,日期的输入不能为将来和某个时间点。这样我们的profilePage的视图就相对完善了许多了。不过,我们已经的前面对日期处理时,有过这样的问题,不同国家的格式是不一样的,所以我们的系统需要支持国际。下一节中,我们将会讲国际化。源码路径:git@github.com:owenwilliam/masterSpringMVC_3.git
相关文章推荐
- SpringMVC错误提示(三)
- SpringMVC日期处理(二)
- SpringMVC创建用户信息(一)
- 使用Spring框架对接Twitter(二)
- Eclipse wtp project dependent project facets问题
- 配置log4j日志动态加载(不重启服务)
- springmvc开发问题汇总(环境搭建)
- 10040---Java IO --缓冲流
- SpringMvc入门五----文件上传
- 【代码笔记】Java深入学习——实现客户端发送文件到服务器的文件传输
- 编译 openJDK source code
- 定时任务服务开发笔记(1)——Quartz2+Spring3+Struts2整合
- HDOJ/HDU 2203 亲和串(简单的判断~Java的indexOf()方法秒)
- HDOJ/HDU 2203 亲和串(简单的判断~Java的indexOf()方法秒)
- Eclipse中执行Maven的build命令
- SpringMVC-表单验证
- 新建maven项目pom报错
- Struts2系列入门教程---第一章 HelloStruts2
- eclipse中安装maven插件及创建maven项目
- 【GOF23设计模式】_代理模式_静态代理_动态代理_开发场景JAVA236-237