您的位置:首页 > 编程语言 > Java开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: