SpringMVC深入信息提示(四)

来源:互联网 发布:淘宝买airpods靠谱吗 编辑:程序博客网 时间:2024/06/06 19:24

1.文件配置

     从上一节中,我们看到的错误信息的提示都是固定,我们需要是提示信息转换我们想要的信息。这个实现,首先需要我们在src/main/resource下定义messages.properties的文件。这个文件不仅仅是信息配置的信息,同时也是国际化可以配置的地方,我们在稍后的章节中将会学习到国际化。现在我们在messages.properties的文件中添加的信息如下。

Size.profileForm.twitterHandle=Please type in your twitter user nameEmail.profileForm.email=Please specify a valid email addressNotEmpty.profileForm.email=Please specify your email addressPastLocalDate.profileForm.birthDate=Please specify a real birth dateNotNull.profileForm.birthDate=Please specify your birth datetypeMismatch.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)@Documentedpublic @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@PastLocalDateprivate LocalDate birthDate;

3.总结

在这一章节中,我们实现了错误信息提示可以动态变化,就是配置在文件中。同时,我们也做了生日日期的限制处理,日期的输入不能为将来和某个时间点。这样我们的profilePage的视图就相对完善了许多了。不过,我们已经的前面对日期处理时,有过这样的问题,不同国家的格式是不一样的,所以我们的系统需要支持国际。下一节中,我们将会讲国际化。


源码路径:git@github.com:owenwilliam/masterSpringMVC.git




0 0
原创粉丝点击