Как я могу добавить параметр URL, но скрыть другие в POST - Spring MVC - PullRequest
0 голосов
/ 13 мая 2011

Я пытаюсь добавить параметр URL в приложении Spring MVC. Это базовая страница поиска, которая показывает результаты.

На странице поиска есть форма, для которой установлено POST. Есть много скрытых полей и других полей, которые я не хочу в URL. Итак, я не хочу делать GET.

Мне нужен поисковый запрос в URL. Таким образом, после нажатия кнопки поиска на странице результатов поиска должен быть URL-адрес типа / search? Query = hello

Чтобы заставить его работать, я создаю метод RequestMapping в Spring MVC Controller и делаю перенаправление: добавление параметра запроса. Тем не менее, я не уверен, что использование перенаправления - лучший ответ, возможно, могут быть проблемы с производительностью при перенаправлении.

Я огляделся и заметил людей, использующих javascript и объект location, но установка объекта location явно перезапускает URL-адрес, на который вы его установили. Я также посмотрел на объекты HTTPServletResponse и HTTPServletRequest, но не смог найти много.

Есть мысли о том, как заставить параметр поиска быть добавленным в URL?

Ответы [ 2 ]

0 голосов
/ 27 мая 2011

Я хотел бы дать более полный ответ на мой вопрос с кодом.Предыдущий пользователь помог мне пройти этот путь, поэтому я оставлю его как принятый ответ.Однако есть один пункт, на который следует обратить внимание:

Если вы добавите к действию и у вас будет текстовое поле ввода с тем же именем, на странице появится двойное значение, например: query = hello, hello.

Итак, мне нужно было удалить имя в поле ввода и использовать следующий javascript.Обратите внимание, что я использую framework.type:

Event.observe(window, 'load', function(event) {

Event.observe('searchForm', 'submit', function(event) {     

    $('searchForm').action += "?query="+$('searchBox').value;

});
0 голосов
/ 13 мая 2011

В вашей форме будет указано «действие», сообщающее, куда отправлять. Я бы подумал, что вы можете прикрепить событие onclick к вашей кнопке отправки (или событие onsubmit к вашей форме), которая обновляет URL-адрес действия, добавляя к нему «? Query =».

document.<form name>.action += "?query=...";

Тогда вам просто нужно беспокоиться о том, что кто-то отправит вашу форму без включенного JavaScript - в этом случае вы можете вернуться к своему перенаправлению.

Я не знаю, как работает серверная технология, поэтому я не могу сказать, будет ли она счастлива, предоставив вам оба параметра GET и POST, если нет, вам придется вручную вырезать GET из URL.

Но в любом случае, это выглядит довольно странной ситуацией - действительно ли так сложно показать параметры в URL? Все, что публикуется в HTML-форме, все еще может быть проверено с помощью подходящих инструментов, просто это немного сложнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...