我試圖在Spring MVC框架下編寫validators,但文檔中有明顯的遺漏。當調用將錯誤傳遞給Errors對象時,大多數方法需要一個名爲errorCode的String參數。如果我理解正確,這些錯誤代碼可用作特定錯誤消息的展示位置。但是我不能在生活中找出這些代碼映射到的位置。Spring MVC驗證錯誤代碼在哪裏解決?
這裏是我從Spring MVC的Javadoc中引用的一個例子;
public class UserLoginValidator implements Validator {
private static final int MINIMUM_PASSWORD_LENGTH = 6;
public boolean supports(Class clazz) {
return UserLogin.class.isAssignableFrom(clazz);
}
public void validate(Object target, Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "userName", "field.required");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "field.required");
UserLogin login = (UserLogin) target;
if (login.getPassword() != null
&& login.getPassword().trim().length() < MINIMUM_PASSWORD_LENGTH) {
errors.rejectValue("password", "field.min.length",
new Object[]{Integer.valueOf(MINIMUM_PASSWORD_LENGTH)},
"The password must be at least [" + MINIMUM_PASSWORD_LENGTH + "] characters in length.");
}
}
}
有誰能夠賜教嗎?
感謝您的信息,這使我足以使用我的驗證器。但爲了學習如果我想在自定義MessageCodeResolver中重新連接,我該怎麼做,我該去哪裏?也只是爲了繁榮ResourceBundleMessageSource的javadoc位於http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/context/support/ResourceBundleMessageSource.html。 – 2009-12-10 16:13:44
如果您想使用自定義的MessageCodeResolver,您可以爲給定的控制器分配一個。然後,一種方法是使用bean繼承來使所有控制器bean從一個控制器bean定義繼承,如下所述:http://forum.springsource.org/showthread.php?t=46336目前還沒有辦法全局定義一個自定義的MessageCodeResolver;這裏有一個增強請求:https://jira.springsource.org/browse/SPR-5187 – 2009-12-10 18:45:47
作爲參考,全局自定義的'MessageCodeResolver'功能最終在Spring 3.1(2011)中實現。另見[SPR-6506](https://jira.spring.io/browse/SPR-6506)。 – vallismortis 2017-08-30 16:00:19