Message source config:Spring code d'erreur validateur est pas automatiquement résoudre
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("classpath:locale/normal/message", "classpath:locale/validation/message");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
Spring validateur:
@Component
public class MyAccountValidator implements Validator {
@Autowired
MyAccountService myAccountService;
@Override
public boolean supports(Class<?> clazz) {
return MyAccount.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
MyAccount myAccount = (MyAccount) target;
MyAccount myAccountDb = myAccountService.findByUserId(myAccount.getUserId());
if (myAccountDb == null) {
errors.reject("myAccount.id.not_found");
}
}
}
message_en.properties:
myAccount.id.not_found=Your id is not found.
mise en veille prolongée validateur:
@NotNull(message="{myAccount.id.not_found}")
private String password;
contrôleur de printemps:
@RequestMapping(value = { "/validate" }, method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.TEXT_HTML_VALUE)
@ResponseBody
public String validate(Model model, @RequestBody @Valid MyAccount myAccount, BindingResult bindingResult, Locale locale) throws JsonProcessingException {
System.out.println("myAccount user id = " + myAccount.getUserId());
String msg = "";
List<ObjectError> errors = bindingResult.getAllErrors();
for (ObjectError error : errors) {
msg = msg + (error.getObjectName() + " - " + error.getCode() + " - " + error.getDefaultMessage()) + "\n";
}
return msg;
}
Dans mon contrôleur, error.getDefaultMessage()
affiche toujours la valeur NULL pour le code d'erreur validateur Spring errors.reject("myAccount.id.not_found");
, il ne peut pas être résolu automatiquement.
Lorsque j'essaie le validateur d'hibernation comme vous pouvez le voir dans l'annotation de champ ci-dessus, cela fonctionne bien, @NotNull(message="{myAccount.id.not_found}")
peut être résolu parfaitement dans chacun des paramètres régionaux automatiquement.
Est-ce que je n'ai aucune configuration? Pourquoi le code d'erreur du validateur Spring ne fonctionne pas automatiquement? PS: Ma configuration I18N doit être correcte, tous mes JSP peuvent afficher le texte correctement.