![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
garbuz |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Итак господа, смотрим что получилось. Пинаем, ругаем советуем.
Получаем все посты и отображаем их на главной.
Ниже представлена вьюха главной страницы. Интересует степерь убогости определения залогинен ли пользователи или нет, а так же то место, где я создаю ссылку на редактирование поста для его автора. Так правильно делать или же есть более красивое и правильное решение? home.jsp
Сейчас PostController занимается тем, что показывает конкретный пост, выбирает данные для создания нового поста и переправляет нас на нужную вьюху, выбирает данные для редактирования поста и перенаправляет нас на нужную вьюху. Контроллеры, которые будут создавать посты и редактировать, еще не готовы. Пока в FormController не разобрался, как-то примеров внятных не получается найти. Может кто выложит и объяснит что к чему? И еще вопрос, который уже был выше. Итак, пользователь у нас залогинен, ему отображается ссылочка для редактирования поста типа http://localhost:8080/blog/editPost.htm?postId=1, он там подредактирует, отсабмитит и все окей. Если пользователь не залогинен, тогда он отсылается на форму логина, это делает сам томкат. Но что делать если пользователь залогинен, но не является автором поста но каким-то чудом узнал такую ссылку и прошел по ней. Открывается та же форма редактирования. Выше предлагались решения, пока решил остановиться на фильтре. Как в фильтре проверить может ли этот пользователь править пост или нет? |
||||||||
|
|||||||||
goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: нет Всего: 9 |
времени нет смотреть, но то что бросилось в глаз:
<%@ include file="header.jsp" %> скриплеты - зло - по возможности попробуй отказаться от них раз и навсегда используй jstl теги используй теги Spring MVC для форм которые пишуться под SimpleFormController -------------------- SCJP 6 |
|||
|
||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
||||
|
||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Разбираюсь с simpleFormController. Вот цитата из Spring in Action
Значит моя писанина выше с PostController не верна! Ведь именно он сейчас отображает вьюхи с формами! Так же это значит, что мой PostController не должен быть никаким multiAction контреллером, а должен лишь выполнять одно действие - выбирать пост и отображать его. Итак, что я понял из прочитанного. Если где-то ошибусь - прошу поправить. 1) Когда приходит GET запрос, то контроллер показываем форму, когда POST, то обрабатывает форму. 2) У бина формы есть две вьюхи - одна сама форма, вторая - куда переходим после удачной обработки формы. 3) В конструкторе контроллера можно вызвать два метода setCommandClass(), setCommandName, эти же параметры мы можем указать бину через xml. Как я понимаю это класс и имя объекта, которые получатся после сабмита формы 4) В методе formBackingObject происходит создание объекта, который нам вернет сабмит формы. 5) Метод referenceData нужен для того, чтобы передать на форму какие-то доп данные. Например для создания поста, я в форму должен передать список категорий. Категории получаем именно в этом методе. 6) Метод onSubmit нужен для получения объекта из формы, дальнейшей работы с ним и перехода на successView Непонятно следующее! Как происходит заполнение объекта данными из формы? Может кто объяснит немного? И еще интересует вопрос использования спринговых тегов, можно даже примерчик сюда кинуть )) Вот мои мысли по поводу этого контроллера, если где не прав - исправляйте, если где мало сказал - дополняйте ![]() |
|||
|
||||
Старовъръ |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.5.2008 Репутация: 1 Всего: 10 |
Пример:
<form:input path="searchValue"/> - поле ввода, связанное с полем searchValue объекта form. Спринг сам заполнит нужное поле, то есть выполнит операцию: form.setSearchValue("введенное в поле ввода значение") Добавлено через 6 минут и 33 секунды
Это сообщение отредактировал(а) Старовъръ - 15.5.2009, 18:47 -------------------- |
||||
|
|||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Старовъръ, спасибо. Не мог бы код jsp скинуть, где эти теги учавствуют и есть какая-нить форма? Если есть конечно
![]() |
|||
|
||||
Старовъръ |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.5.2008 Репутация: 1 Всего: 10 |
Формочка пока совсем еще примитивная: парочка меток, поле ввода, сабмит и табличка:
Вот контроллер:
-------------------- |
||||||
|
|||||||
Старовъръ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.5.2008 Репутация: 1 Всего: 10 |
Кстати, можно использовать и обычные html-теги:
<input type="textarea" name="form.searchValue"> Но если произошла ошибка и страницу нужно наново показать, то в данном случае все введенные данные потеряются. Используя же spring bind tags ничего страшного не произойдет - поля наново заполнятся. -------------------- |
|||
|
||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Старовъръ, спасибо, буду курить
![]() |
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 14 Всего: 104 |
Объект из формы передается как параметр в онСабмит. По всем остальным пунктам - правильно. -------------------- Lost.... |
|||
|
||||
garbuz |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Появилось время, сел опять за спринг. Разбираюсь дальше с FormController.
Все вроде бы сделал правильно.
Странно то, что после сабмита формы я не попадаю в метод onSubmit, у меня проиходит снова вызов formBackingObject и referenceData. Почему? И еще вопрос. Например я отсабмитился, все нормально. Далее должен следовать переход на success view. А там сразу бы хотелось отобразить новый пост, а этим занимается другой контроллер. Короче надо перейти на другой конторллер и еще ему параметр передать. |
||||||
|
|||||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Цитата из Spring in action
Не понимаю, почему у меня после сабмита формы не вызывается этот метод. Метод пост в форме указан явно, commaddName тоже поменял с post на newPost, даже атрибут action явно указал, но все равно попадаю в formBackingObject() |
|||
|
||||
Kangaroo |
|
||||||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 14 Всего: 104 |
formBackingObject вызывается всегда. А вот referenceData не должен. Может какие-то ошибки валидации и Спринг обратно показывает форму? Попробуй: 1. Пройтись дебагом. Посмотри метод processFormSubmission , там как раз вызывается onSubmit 2. Посмотри полный лог Спринга (левел DEBUG).
В онсабмите:
-------------------- Lost.... |
||||||
|
|||||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Почему? Разве не только перед отображением формы? Насколько я понимаю, в этом методе создается объект, который будет запонятсья данными из формы, и его же мы получам в onSubmit как параметр. Зачем еще раз вызов метода formBackingObject(), зачем нам второй объект? Если я неверно понимаю ситуацию - прошу объяснить ![]()
В методе processFormSubmission поставил брейкпоинт и обнаружил эксепшн! Там что-то не то с валидацией! Буду разбираться что. Хотя валидация явно пока еще не прикручена. А где это можно глянуть? |
|||
|
||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Как выяснилось, ошибка в том, что в объект в поле типа Set попадает строка. Есть на странице множественный select, как выбранные элементы списка превратить в набор и отдать его объекту?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |