Tôi đang cố gắng viết validators trong khuôn khổ Spring MVC, nhưng có một thiếu sót rõ ràng trong tài liệu. Khi gọi qua một lỗi tới đối tượng Errors, hầu hết các phương thức đều mong đợi một tham số String có tên là errorCode. Những errorCodes, nếu tôi hiểu chính xác phục vụ như là stand in cho các thông báo lỗi cụ thể. Nhưng tôi không thể cho cuộc sống tìm ra nơi các mã này được ánh xạ tới.Mã lỗi xác thực mùa xuân MVC được giải quyết ở đâu?
Đây là ví dụ về những gì tôi đang đề cập đến từ Javadoc của Spring MVC;
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.");
}
}
}
Mọi người có thể khai sáng cho tôi không?
Cảm ơn bạn đã cung cấp thông tin, điều này mang lại cho tôi đủ để sử dụng trình xác thực của tôi. Nhưng trong sự quan tâm của việc học những gì tôi sẽ làm gì nếu tôi muốn viết lại trong một MessageCodeResolver tùy chỉnh, nơi mà tôi sẽ đi đâu? Ngoài ra chỉ dành cho javadoc của ResourceBundleMessageSource thịnh vượng là http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/context/support/ResourceBundleMessageSource.html. –
Nếu bạn muốn sử dụng MessageCodeResolver tùy chỉnh, bạn có thể gán cho một bộ điều khiển đã cho. Một cách tiếp cận, sau đó, là sử dụng thừa kế bean để làm cho tất cả các bean điều khiển kế thừa từ một định nghĩa bean điều khiển, như được mô tả ở đây: http://forum.springsource.org/showthread.php?t=46336 Hiện tại không có cách nào để xác định một MessageCodeResolver tùy chỉnh trên toàn cầu; có một yêu cầu nâng cao cho điều đó ở đây: https://jira.springsource.org/browse/SPR-5187 –
Để tham khảo, tính năng tùy chỉnh toàn cục 'MessageCodeResolver' cuối cùng đã được triển khai trong Spring 3.1 (2011). Xem thêm [SPR-6506] (https://jira.spring.io/browse/SPR-6506). – vallismortis