![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
ShurikA |
|
||||||||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
Есть контроллер:
и фаблон формы:
Форма отрисовывается и отрабатывает нормально всегда, кроме одного случая: Когда, я бытаюсь создать новую запись (EmployeePosition) при этом такова уже сыществует. Я должем вернуться в форму с ошибкой. За это овечает вот этот код:
но в место этого получаю ексепшен:
что я делаю не так. P.S. Кстати, у меня есть ещё два контроллера, в которых сделанно таким же образом (для других объектов), и всё работает как часы... |
||||||||
|
|||||||||
ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
А вот то что я получяю на Tomcat-e:
|
|||
|
||||
Juggernaut |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 4.12.2005 Репутация: 1 Всего: 2 |
Судя по тексту ошибки и вот этому коду
у вас отличаются входной параметр set метода и выходной параметр get метода для свойтва emplPosId Что-то типа: Object getEmplPosId() void setEmplPosId(Integer id) Надо привести к одному типу, ИМХО. |
|||
|
||||
ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
Juggernaut,
Да вроде нет:
|
|||
|
||||
Juggernaut |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 4.12.2005 Репутация: 1 Всего: 2 |
Тогда второе предположение:
где судя по докам br.getModel() возращает Map получается, что в форме под именем "emplPosFormCommand" лежит обычная Map, у которой естественно нет никаких методов: а вот и логи .... Invalid property 'emplPosId' of bean class [java.util.HashMap]: |
|||
|
||||
ShurikA |
|
||||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
Это я понимаю, но по какой причине это может быть. Так как если форма просто не проходит валидацию, тут:
и грубо говоря делает тоже самое, то всё прекрасно работает. Более того, в двух других местах, я делаю тоже самое с другими формами, и всё ОК. ![]() |
||||
|
|||||
Juggernaut |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 4.12.2005 Репутация: 1 Всего: 2 |
Но если все прекрасно работает можно попробовать вынести проверку дублирующихся записей на этап валидации.
Собственно try-catch убрать, логику вывода сообщения перенести в новый метод. ИМХО, использование исключений для обработки логики not the pattern way. ))) P.S. Если не сильно сложно я бы хотел глянуть хотя бы один из работающих контроллеров и валидатор. |
|||
|
||||
ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
||||
|
||||
Juggernaut |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 4.12.2005 Репутация: 1 Всего: 2 |
А чем плоха Injection в валидатор? Я в своем проекте делал форму регистрации на Spring, где нужно было как раз проверять на наличие дублирующихся e-mail, nickname и т. д. Собственно все это дело проверялось методами checkDuplicateXXX в валидаторе посредством заинжектенного сервиса/DAO. Тогда даже не знаю.... Выведите в логи содержимое br.getModel в том месте где работает и где нет, посмотрите чего не хватает и ручками добавьте. Хотя это уже debug и проблему не решает. |
|||
|
||||
ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
Juggernaut,
Буду пробовать с DAO в валидаторе. И расскажу как было ![]() |
|||
|
||||
ShurikA |
|
||||||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
|
||||||
|
|||||||
Juggernaut |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 4.12.2005 Репутация: 1 Всего: 2 |
Вот оно:
Так правильно:
а так нет,
потому что из исходников спринга в комментах для метода getModel Return a model Map for the obtained state, exposing an Errors instance as MODEL_KEY_PREFIX + objectName' and the object itself. Т.е. HashMap модель ошибок уже содержит в себе командный объект и связанные с ним ошибки. |
||||
|
|||||
ShurikA |
|
||||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
Так оно так и было, изначально... Это потом я уже начал с этим играться и пытаться понять почему не работает. Но это уже не важно, так как я уже начал переделывать валидатор с инджектом сервиса. но как обычно, всё не как у людей ![]() пока что @Autowire в валидаторе не пашет. Добавлено через 7 минут и 49 секунд
Это то что ты имел в виду? Добавлено через 9 минут и 46 секунд При валидации вылетает такое:
|
||||
|
|||||
Juggernaut |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 4.12.2005 Репутация: 1 Всего: 2 |
Не очень понятная ошибка - номера строчек мне ни о чем не говорят.
Но похоже у тебя NPE из-за отсутствия сервиса. Сделай такой "финт ушами": EmployeeTypeFormValidator etFormValidator = new EmployeeTypeFormValidator(); etFormValidator.setService(/*..тут твой сервис из контроллера */); etFormValidator.validate(etComm, br); т.е. устанавливаешь сервис не через Autowired, а из контроллера. Интересно почему сервис сам не подключился... Добавлено через 13 минут и 26 секунд Можно попробовать еще заменить @Autowired на @Resource |
|||
|
||||
ShurikA |
|
|||
![]() Зануда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1364 Регистрация: 29.10.2005 Где: Канада Репутация: нет Всего: 3 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |