|
|
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Доброе время суток. Столкнулся со неожиданным поведением при последовательном выполнении GET и POST запросов с одной страницы для Spring MVC. Упрощенный пример, демонстрирующий данное поведение, приложен. Предусловие Есть POJO Domain с строковыми свойствами a, b. Domain.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Для данного бина задан контроллер DomainController, позволяющий отображать и редактировать свойства. Для отображения используется обработчик Код: java 1. . Для инициализации формы редактирования - Код: java 1. . Сохранение происходит с использованием POST Код: java 1. . На странице редактирования есть возможность выполнить GET, который возвращает эту же страницу, но с дополнительной информацией (сложенным значением свойств a и b) - Код: java 1. . DomainController.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. Редактирование реализовано следующим образом. edit.jsp Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Проблема Если на форме редактирования вначале выполнить get, а затем - post, то в качестве значений свойств записывается список значений, а не последнее значение, введенное на форме. Более общий вопрос - является ли подход, при котором форма редактирования может использоваться для отображения дополнительных данных, верным? Используется Spring 4.2.8.RELEASE, tomcat 7. Заранее благодарен, извините, если баян. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2016, 22:25 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Андрей0407, Отладчик f12 включал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 08:56 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Запутанно все :( прочитал два раза посмотрел код и не понял в чем проблема :( попробуйте сделать как в книжках пишут pattern post redirect get Пример : http://javastudy.ru/spring-mvc/spring-mvc-pattern-prg-postredirectget/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 10:01 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
увидел первое : в одном теге form не может быть двух тегов submit - это по спецификации . вариант две формы . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 10:03 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
увидел второе modelattribute странная работа в контроллере на во вью у вас некорректная работа с modelattribute посмотрите тут http://www.seostella.com/ru/article/2012/04/24/modelattribute-i-spring-mvc.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 10:04 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Atum1Запутанно все :( прочитал два раза посмотрел код и не понял в чем проблема :( попробуйте сделать как в книжках пишут pattern post redirect get Пример : http://javastudy.ru/spring-mvc/spring-mvc-pattern-prg-postredirectget/ развер браузер после POST не отправляет САМ автоматом запрос GET? Без явного написания программистом? Я так понимаю, что данный код нужен при переходе на ДРУГУЮ страницу после POST. Если остаёмся на этой же, то ничего делать не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 11:22 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Atum1увидел второе modelattribute странная работа в контроллере на во вью у вас некорректная работа с modelattribute посмотрите тут http://www.seostella.com/ru/article/2012/04/24/modelattribute-i-spring-mvc.html Поясни, пожалуйста, что именно некорректно? MVC извлекает command object из запроса по имени в форме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 12:01 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Согласен, воспроизведение надо описать подробнее. 1. Перейти на форму редактирования, указать значение А = 1, B = 2. 2. Нажать кнопку Post. 3. Повторно перейти на форму редактирования. 4. Нажать Get. 5. Нажать Post. Ожидаемый результат Свойства бина остались прежними А = 1; B = 2. Текущий результат Свойства бина приняли значение А = 1,1; B = 2,2. По реализации. Возможность отправить get со страницы редактирования - для получения результатов валидации, более подробных, чем можно положить в BindingResult. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 12:09 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Андрей0407Согласен, воспроизведение надо описать подробнее. сначала F12 нажать и вкладку Сеть. Там видны все GET\POST с параметрами. Ферштейн? Программист? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 12:18 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Petro123, А я то дурак, для это WireShark использую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 12:32 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Андрей0407Petro123, А я то дурак, для это WireShark использую. верно. Умные приводят в вопросе всю доп.информацию. .. Андрей04071. Перейти на форму редактирования, в урл набрать localhost/demo.jsp и Enter === ушло GET 1.1 указать значение А = 1, B = 2. 2. Нажать кнопку Post. === ушло POST с параметрами 1 и 2 верно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 12:53 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Действительно, удобнее. Спасибо. Значение параметра дублируется, т. к. передается через Query String (этого ранее не заметил) и через Form data. Примечательно, что удаление параметров из строки браузера не помогает. Для решения проблемы можно сделать переадресацию после get с формы редактирования. DomainController.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 12:57 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Petro123верно. Умные приводят в вопросе всю доп.информацию. Исправлюсь. В следующий раз предоставлю доступ к стенду и полное описание всего ПО. Petro123... верно? Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 13:14 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Андрей0407Исправлюсь. В следующий раз предоставлю доступ к стенду и полное описание всего ПО. нет. Достаточно отвечать на вопросы (с вопросительным знаком первый ответ). Андрей0407Действительно, удобнее. Спасибо. всё? Вопрос решён? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 13:25 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Petro123, смог обойти нежелательное поведение, спасибо. Но более общий вопрос остался в силе. Как правильно организовать страницы и обработку запросов, чтобы на странице редактирования можно было отображать дополнительные данные, основанные на введенных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 13:35 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Андрей0407, javascript. Учи AJAX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 13:43 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Андрей0407дополнительные данные, основанные на введенных. - am_sasa верно сказал. Без перерисовки странички по GET\POST только JS+jQuery = AJAX. - либо тоже можно перерисовку (GET уже с введёнными параметрами). Ну, моргнёт форма на 0,2 сек - некритично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 13:52 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Андрей0407Petro123, смог обойти нежелательное поведение, спасибо. Но более общий вопрос остался в силе. Как правильно организовать страницы и обработку запросов, чтобы на странице редактирования можно было отображать дополнительные данные, основанные на введенных. Как, как. ч\з @ModelAttribute :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 14:02 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
mad_nazgulКак, как. ч\з @ModelAttribute :-) осталось уточнить что у него значит - Отображать на введённых). Во время ввода или после сабмита и коммита в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 14:50 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
mad_nazgulКак, как. ч\з @ModelAttribute :-) Спасибо, кэп. Необходимость повторно вернуть страницу меня не волнует. Сейчас сделал так, чтобы после get шла переадресация на эту же страницу, но с дополнительными параметрами. Вопрос был в том, как это принято делать для озвученного стека. Возможно, следует создать в JSP две формы и одну спрятать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 15:01 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Впрочем, вопрос скорее риторический - не нашел примера в petclinic. Всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 15:04 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Андрей0407Сейчас сделал так, чтобы после get шла переадресация на эту же страницу, но с дополнительными параметрами. если без стека спринг, а по житейски )) то: - после POST - сохранение в базу и сразу уже с новыми значениями GET и показ формы. Доп. параметры можно посмотреть на примере установки фильтров в вебе. Там при каждом значимом фильтре добавляется параметр в Урл. Т.е. на кнопку Применить пойдёт GET с параметрами фильтров. + дополнительно эти парам.можно сохранить в ярлыке на десктоп как преимущество. Что у тебя за ВИ и параметры я не понял. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 15:16 |
|
||
|
Spring MVC. Дублирование параметра запроса после выполнения GET
|
|||
|---|---|---|---|
|
#18+
Андрей0407mad_nazgulКак, как. ч\з @ModelAttribute :-) Спасибо, кэп. Необходимость повторно вернуть страницу меня не волнует. Сейчас сделал так, чтобы после get шла переадресация на эту же страницу, но с дополнительными параметрами. Вопрос был в том, как это принято делать для озвученного стека. Возможно, следует создать в JSP две формы и одну спрятать. Можно как угодно. Причем запрос дополнительный запрос GET не нужен. Я, например, возвращаю ModelView, а не String (для GET тоже). А уже в ModelView устанавливать какую страницу (JSP) открыть и передать все нужные атрибуты. Ну а в JSP уже переданные атрибуты отобразить если надо. Пошерстите http://www.mkyong.com/ там есть куча примеров для работы со Spring ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 15:58 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=86&tid=2123621]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 301ms |

| 0 / 0 |
