Przeczytałem kilka książek na temat wiosennego 2.5 na ten temat, ale wciąż nie mogę uchwycić pojęć, kiedy używać @initBinder. czy ktokolwiek może udostępniać jakiekolwiek odniesienia lub wyjaśnić, w jakiej sytuacji mogę skorzystać z tego w aplikacji internetowej? Jak właściwości propertyEditor odnoszą się do niego?spring initBinder i webbindinginitializer example
Odpowiedz
Cóż, nie mogę tego tak naprawdę opisać lepiej niż książki, ale jeśli kontroler posiada jakiekolwiek publiczne metody opatrzone adnotacją @InitBinder, wówczas te metody będą wywoływane przez kontener tuż przed przetworzeniem każdego wniosku, przekazując WebDataBinder jest używany przez framework.
Najczęstszym powodem jest to, aby dostosować sposób, w jaki Spring próbuje powiązać parametry żądania z modelem, na przykład, jeśli model ma niestandardowe typy danych, których Spring nie może obsługiwać po rozpakowaniu. Rejestrujesz PropertyEditors przeciwko WebDataBinder. Trywialnym przykładem może być użycie biblioteki JodaTime w modelu i powiązanie sygnatur znacznika czasu z obiektem Joda DateTime.
Używając Spring 2.0, musisz zastąpić chronioną metodę initBinder() nadrzędną kontrolera, ale Spring 2.5 usuwa to, możesz teraz użyć adnotacji.
wymagać Wiosna 2.5.1+ zobaczyć https://jira.springsource.org/browse/SPR-4182
Innym powodem obok co skaffman wspomniano, byłoby ustawić niestandardowy walidator na swoim WebDataBinder. Zazwyczaj używam sprawdzania fasoli JSR-303, a następnie wiążę walidator, który zapewnia dodatkową weryfikację, której nie zapewnia JSR-303.
Wewnątrz kontrolera:
@InitBinder
protected void initBinder(WebDataBinder webDataBinder) {
Validator validator = webDataBinder.getValidator();
webDataBinder.setValidator(new UserFormValidator(validator));
}
Co robię bierze w walidator fasoli, nazywając że w moim niestandardowego walidatora, a następnie wywołanie moich niestandardowych walidacji. Coś takiego:
public class UserFormValidator implements Validator {
private Validator validator;
public AuthUserFormValidator(Validator validator) {
this.validator = validator;
}
@Override
public boolean supports(Class<?> clazz) {
return UserForm.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
// Run the bean validation...
validator.validate(target, errors);
// Do your custom validation on userForm here...
UserForm userForm = (UserForm) target;
// Validation on userForm...
}
}
- 1. jBullet example
- 2. Erlang mysql example
- 3. proste C++ hash_set example
- 4. System.Net.FtpWebRequest GetDateTimestamp example
- 5. Disruptor helloworld example
- 6. React Native - Headless JS example
- 7. Angularjs ng-animate move example?
- 8. Krojenie i rozgłaszanie wielowymiarowych tablic w Julii: meshgrid example
- 9. Napisz rozszerzenie atrybutów plików swift example
- 10. python-twitter streaming api support/example
- 11. Imgur API Version 3 JavaScript upload example
- 12. Spring Boot i FreeMarker
- 13. Spring JdbcTemplate i Transakcje
- 14. Spring @Aync i AbstractRoutingDataSource
- 15. Java - jak połączyć adnotacje walidacji i AOP i użyć go w kontrolerach Spring?
- 16. Spring, @Transactional i Hibernate Lazy Loading
- 17. Połączyć Netty i Spring MVC
- 18. Spring RestTemplate i Proxy Auth
- 19. Spring MVC, REST i HATEOAS
- 20. Spring Security REST i Angular
- 21. Integracja VaVin i Spring MVC
- 22. Spring MockMvc przekierowywany z wzorcem
- 23. Integracja z Resteasy i Spring bez Spring ContextLoadListener
- 24. Spring Rozszerzenie SAML i Spring Security CSRF Protection Conflict
- 25. Lokalizacja plików przy użyciu tagu @example z roxygen2
- 26. Jak działa find-by-example w Finderze Pharo?
- 27. Spring @ Transactional nie działa
- 28. Spring Social facebook + Spring Security
- 29. Wiosna InitBinder: wiążą pustych lub zerowe wartości pola pływaka jako 0
- 30. ładowanie .properties w spring-context.xml i persistence.xml