Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java EE (J2EE) и Spring > Как передать просто сообщение из контроллера |
Автор: Ccoder 5.4.2012, 07:12 | ||||
Здравствуйте. У меня есть контрелер который получает данные account, проверяет account и должен в случает если account нет показать страницу(тут-же где вводятся данные) с сообщением что account плохой. Вот так делаю примерно
Проблема в том что поля error у backed bean'а нет и я получаю
Само поле мне вводить не хочется. Хочу узнать что тут можно сделать? |
Автор: danilych 5.4.2012, 08:42 |
Используй метод errors.reject() - метод создает объект ошибки, привязанный к command объекту, а не к полю errors- параметр метода public void validate(Object target, Errors errors) {} из интерфейса org.springframework.validation.Validator; Еще обратил внимание на то, что храните command объект в сессии, есть другой вариант - http://norguhtar.livejournal.com/59204.html |
Автор: werdy 5.4.2012, 08:55 |
Можешь попробовать передать через request.setAttribute("xxx","Плохой аккаунт, плохой аккаут"); |
Автор: Ccoder 5.4.2012, 08:55 | ||||
Вот так
получаю
|
Автор: danilych 5.4.2012, 09:30 | ||
Важна еще очередность параметров метода обработчика
и зачем добавили в свой метод обработчик Errors errors, если BindingResult реализует интерфейс Errors? |
Автор: Ccoder 5.4.2012, 09:45 | ||||||
Но вот так
вроде как всё нормально, но
Добавлено через 1 минуту и 13 секунд Вот так я хочу вывести в jsp
|
Автор: danilych 5.4.2012, 10:01 | ||
Теория тут такая. Когда происходит валидация полученных из формы данных, то можно привязывать ошибки 1. К полям формы(байндятся на поля command объекта) и 2. К самой форме (байндятся на command объект).
тэг <form:errors path="*" cssClass="error" /> - покажет все ошибки, прикрепленные к command объекту тэг <form:errors path="hour" cssClass="error" /> - покажет все ошибки, прикрепленные к полю hour command объекта. чтобы прикрепить ошибку к command объекту нужно использовать метод reject(), а не rejectValue(), в вашем случае вместо errors.rejectValue("error", "error.account"); нужно писать errors.reject("invalid.account", "Invalid account"); |
Автор: Ccoder 5.4.2012, 10:03 | ||||
.... Добавлено через 4 минуты и 2 секунды Так, если я хочу к полю error Делаю так
то ничего не вижу.
А зачем тут другой? Добавлено через 6 минут и 28 секунд А как к форме мне его прилепить? Какая должна быть форма (её атрибуты)? |
Автор: danilych 5.4.2012, 10:36 |
к полю, которого нет в комманд объекте не получится, так уж написан фреймворк. И почитайте спецификацю метода errors.reject(), вы его не верно понимаете вот еще можете почитать http://stackoverflow.com/questions/4692323/how-to-print-global-errors-only-with-formerrors http://stackoverflow.com/questions/4930446/use-error-in-form-without-a-field-binding |
Автор: Flashed 5.4.2012, 10:41 |
"Гибкая разработка приложений на JAVA." Анил Хемраджани. Тока недавно читал вроде про это. Глава 7, 168 стр. Жаль книга во вложение не влезает. |
Автор: danilych 5.4.2012, 10:46 |
лучше что-то вроде этого Apress - Spring Recipes. A Problem-Solution Approach 3.0 Gary Mak and Josh Long |
Автор: Ccoder 5.4.2012, 10:49 | ||||
Попробовал то что в stackoverflow
Но невижу ничего. |
Автор: danilych 5.4.2012, 12:26 |
как вариант попробуйте выставить параметры метода обработчика в такой последовательности: @ModelAttribute("coomandObject") CommandObject command, BindingResult result, Model model + в коде добавьте model.put("loginResult",loginResult); перед return; |
Автор: Ccoder 5.4.2012, 12:35 | ||||
Я с такой именно пробую Добавлено через 4 минуты и 36 секунд Ну вот так
вижу без Hello А так
Вообще без errors Добавлено через 5 минут и 21 секунду В чём-же тут загвоздка ...... |
Автор: Ccoder 5.4.2012, 13:32 |
Так вообще ктото делает? (вот как я пытаюсь) |
Автор: danilych 5.4.2012, 14:24 |
model.addAttribute("loginResult", new LoginResult()); - не нужно создавать новый LoginResult, нужно передать тот, который в параметрах метода получаем через @ModelArrtibute, т.е. вот так должно быть model.addAttribute("loginResult", loginResult); |
Автор: Ccoder 6.4.2012, 03:38 | ||
Но через
по прежнему ничего не вижу. |
Автор: Ccoder 6.4.2012, 14:08 |
но <form:errors/> работает для полей если поместить в форму. Кто-нибудь может поможет добить это дело ...... |