spring6-国际化:i18n | 数据校验:Validation
在Spring框架中,我们可以使用MessageSource
来实现国际化(i18n),并利用Validator
接口进行数据验证。以下是一个简单的例子:
- 创建国际化资源文件,例如:
messages_en.properties
(英文)和messages_zh_CN.properties
(中文)。
# messages_en.properties
welcome.message=Welcome to our application!
# messages_zh_CN.properties
welcome.message=欢迎来到我们的应用程序!
- 配置
MessageSource
bean,在Spring配置文件中或通过Java配置。
@Configuration
public class MessageSourceConfig {
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("messages");
return messageSource;
}
}
- 使用
MessageSource
进行国际化。
@Autowired
private MessageSource messageSource;
public String getWelcomeMessage() {
return messageSource.getMessage("welcome.message", null, LocaleContextHolder.getLocale());
}
- 创建一个
Validator
实现类进行数据验证。
@Component
public class UserValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return User.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
User user = (User) target;
ValidationUtils.rejectIfEmpty(errors, "name", "name.empty");
if (user.getName().length() < 5) {
errors.rejectValue("name", "name.short", null, "Name is too short.");
}
}
}
- 在控制器中使用验证器。
@Autowired
private UserValidator userValidator;
@PostMapping("/register")
public String registerUser(@Valid @ModelAttribute User user, Errors errors) {
if (errors.hasErrors()) {
return "register";
}
// 注册用户逻辑
return "redirect:/success";
}
在这个例子中,我们定义了一个简单的User
类和UserValidator
,在控制器的注册方法中使用了@Valid
注解来触发数据验证。如果验证失败,则返回注册页面进行修改;如果验证成功,则执行用户注册逻辑。国际化资源文件根据不同的Locale
提供不同语言的文本信息。
评论已关闭