У меня есть контроллер Spring 3 с валидатором для одного из методов.Он настаивает на проверке каждого объекта в модели.Может ли кто-нибудь объяснить мне, почему это происходит, или я делаю что-то не так?
Согласно документации, 5.7.4.3 Настройка JSR-303 Validator для использования Spring MVC (http://static.springsource.org/spring/docs/3.0.0.RC3/spring-framework-reference/html/ch05s07.html)
В JSR-303 один экземпляр javax.validation.Validator обычно проверяет все объекты модели, которые объявляют ограничения проверки.Для настройки средства проверки на основе JSR-303 с Spring MVC просто добавьте JSR-Поставщик 303, такой как Hibernate Validator, к вашему пути к классам. Spring MVC обнаружит его и автоматически включит поддержку JSR-303 для всех контроллеров.
Пример:
@Controller
public class WhaleController {
@Autowired
private Validator myValidator;
@Autowired
private WhaleService whaleService;
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setValidator(this.myValidator);
}
@RequestMapping(value="/save-the-whales")
@Transactional
public void saveTheWhales(@Valid WhaleFormData formData, BindingResult errors, Model model) {
if (!errors.hasFieldErrors()) {
Whale whale = new Whale();
whale.setBreed( formData.getBreed() );
this.whaleService.saveWhale( whale );
model.addAttribute("whale", whale);
}
model.addAttribute("errors", errors.getFieldErrors());
}
}
При запускеон будет жаловаться, что Whale является недопустимой целью для myValidator (который настроен для проверки WhaleFormData, и делает это нормально). Whale - это POJO без ограничений проверки, аннотаций и нигде в конфигурации.объект, помещенный в модель, попытается пройти валидацию и потерпит неудачу, если валидатор не настроен на его обработку.все в порядке.
Может кто-нибудь сказать мне, почему это так, указать мне на соответствующую документацию и / или сказать мне лучший способ поставить что-то на модель без проверки?
ВВ приведенном выше случае я хотел бы поместить «кит» в модель, поскольку теперь он будет иметь уникальный whaleId (), полученный от моего слоя постоянства.
Спасибо!