2016-06-08 144 views
0

春1.3.5春自定義驗證國際化

我創建與org.springframework.validation.Validator界面自定義驗證了一把。我試圖使用本地化的錯誤消息。作爲測試的驗證,我有以下幾點:

@Component 
public class RegionValidator implements Validator { 

    @Autowired 
    RegionService regionService; 

    @Autowired 
    private MessageSource messageSource; 

    @Override 
    public boolean supports(Class<?> clazz) { 
     return Region.class.isAssignableFrom(clazz); 
    } 

    @Override 
    public void validate(Object target, Errors errors) { 
     String message = messageSource.getMessage("region.name.unique", null, null); 
     errors.rejectValue("name", "region.name.unique", "Name must be unique"); 
    } 
} 

在我application.yml我有以下幾點:

​​

在驗證碼,我得到了正確的消息messageSource卻怎麼也我得到errors.rejectValue根據給定的代碼查找消息?

回答

1

我不確定這是100%的路要走,但我沒有提到我原來的問題,我有一個@ControllerAdvice類處理錯誤消息。我注意到,它是做這個...

fieldErrorResource.setMessage(fieldError.getDefaultMessage());

這將始終得到默認的消息,而不是本地化的消息。所以我必須做到以下幾點:

if (fieldError.getCode() != null) { 
    fieldErrorResource.setMessage(messageSource.getMessage(fieldError.getCode(), null, null)); 
} else { 
    fieldErrorResource.setMessage(fieldError.getDefaultMessage()); 
} 

現在我得到了我所期望的。