Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > сложный web интерфейс в spring


Автор: lando1 12.3.2009, 20:03
решил использовать springMVC для веб приложения. 
Прочитал tutorial'ы на сайте - все понятно и красиво. 

Однако естественно в процессе разработки появились затруднения.

Нужно реализовать следующий интерфейс: 
есть логический блок. Пусть для простоты в нем поле для ввода и 2 кнопки - да и нет.

Таких одинаковых блоков на странице N штук в таблице. Как понять какая кнопка и в каком блоке была нажата при обработке запроса в контроллере?

Можно ли, например, такой логический блок реализовать в виде  jsp сегмента (jspf), выдать ему собственный контроллер, который бы обрабатывал нажатие на кнопку? Если да, то  smile  - у меня не получилось.

Автор: Samotnik 13.3.2009, 09:36
Цитата(lando1 @  12.3.2009,  19:03 Найти цитируемый пост)
Как понять какая кнопка и в каком блоке была нажата при обработке запроса в контроллере?

проставь всем id  и потом javascript'ом  отправлять запросы на различные контроллеры

Автор: lando1 14.3.2009, 18:19
а можно немного поподробнее про то как это сделать?

Цитата
проставь всем id  и потом javascript'ом  отправлять запросы на различные контроллеры


Это подразумевает под собой, что URL должны меняться? Если да, то становится еще более непонятно, т.к. априори неизвестно сколько таких блоков будет.

А если мне нужно оставаться в рамках одной страницы, например меняя только параметры request'a ?




Автор: Asal 16.3.2009, 10:50
А спринг бинд не подойдет ?

Автор: XEugene 16.3.2009, 11:22
Цитата(lando1 @  12.3.2009,  20:03 Найти цитируемый пост)

Можно ли, например, такой логический блок реализовать в виде  jsp сегмента (jspf), выдать ему собственный контроллер, который бы обрабатывал нажатие на кнопку? Если да, то - у меня не получилось. 
Вообще-то должно так получиться. Включаешь в страницу jsp с формами 
Код

<jsp:include page="/form.htm"/>

каждая со своим контроллером.  А success view для каждого из этих контроллеров - страница в которую включены формы. Должно работать.

Автор: Llucas 16.3.2009, 12:47
Я бы прописал аттрибут name у кнопки и все. А на сервере ты можешь этот аттрибут вытащить.  И не надо никаких других контроллеров.

Автор: Samotnik 18.3.2009, 10:35
Цитата(lando1 @  14.3.2009,  17:19 Найти цитируемый пост)
а можно немного поподробнее про то как это сделать?

очень просто  smile 
Цитата(lando1 @  12.3.2009,  19:03 Найти цитируемый пост)
Как понять какая кнопка и в каком блоке была нажата при обработке запроса в контроллере?

Блок это <div> - ему  присвой id
первый блок id = 1111  
второй   id = 1112  и т.д.
и тоже самое с кнопочками. 
Потом это все парсиш JavaScript'ом  отправляешь на сервер, и там контролер будет обрабатывать запросы в зависимости от пришедшего id 

Автор: goodday1941 18.3.2009, 12:49
lando1,  а Вам нужна инфа со всех блоков в реквесте или только с того в котором нажата кнопка? )

Автор: mbasil 18.3.2009, 12:49
А можно в каждый блок добавлять скрытое поле с одинаковым названием параметра.
На  приеме просто выбираешь значение параметра, пришедшее из скрытого поля.

Извините- написал и понял, что так не выйдет, поскольку форма одна. 

Автор: goodday1941 18.3.2009, 13:05
где написано что форма одна?

Автор: goodday1941 18.3.2009, 13:38
если автор может пускай перейдет от абстрактной до более конкретной задачи )

Автор: lando1 18.3.2009, 16:55
Цитата(goodday1941 @ 18.3.2009,  13:38)
если автор может пускай перейдет от абстрактной до более конкретной задачи )

можно - ничего секретного в этом нет.

Итак,

есть сущность - анкета(survey).
Кроме названия и других служебных полей она содержит массив сущностей - вопросы(question).

нужно сделать редактор анкеты. 

Выглядит он примерно так:
окно состоит из логических блоков - вопросов. 
Нажимаем на кнопку "редактировать"в блоке у конкретного вопроса  и этот блок становится редактируемым. Там меняем параметры и нажимаем в блоке кнопку "сохранить" - идет update выбранного вопроса.

мне бы хотелось, чтобы обработка такого запроса была на обновление вопроса шла на другой контроллер, чтобы не было "каши". 

Автор: goodday1941 18.3.2009, 20:24
первое: очевидно что у тебя два контролера - первый обрабатывает верхнюю форму, второй таблицу с вопросами
первый реальзуешь с помощью SimpleFormController (сперва может показаться мутным, но на самом деле отличная штука), второй с помощью AbstractController или MultiActionController
второе: нижнюютаблицу можешь разбить на множество маленьких форм
третье: вью у обоих контроллеров будет одинаковым,

Добавлено @ 20:25
бросай по частям то что получается будем править  smile 

подумав, возник второй вариант:
все делать с помощью одного SimpleFormController... то есть все данные на странице одна большая форма.. второй вариант мне нравится больше... с валидацией меньше проблем

Автор: lando1 23.3.2009, 18:51
goodday1941,  спасибо за помощь, постараюсь быстро выкладывать свои наработки.

у меня возник вопрос - обязательно использовать отдельные jsp страницы для блока вопросов. Можно, например, использовать tag file и связать их с отдельными контроллерами? 
Просто если использовать в качестве объектов встравки новые jsp, то их можно будет вызвать и отдельно, что для меня нежелательно.

я попробую пойти по пути вложенных контроллеров - мне кажется, что так будет сложнее и следовательно лучше пойму происходящее.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)