Как изменить возвращенный URL, когда клиент нажимает на ссылку - PullRequest
1 голос
/ 16 мая 2011

У меня есть случай, когда у меня есть страница списка, в которой перечислены все элементы, и каждый элемент имеет ссылку для удаления. Пользователь может щелкнуть эту ссылку, чтобы удалить этот элемент, это формат ссылки для удаления: http://localhost:8080/list.htm?op=del&id=1234

Когда пользователь нажимает на ссылку удаления, он возвращается на страницу списка. Но при этом возникает проблема, заключающаяся в том, что когда пользователь обновляет страницу, он снова вызывает операцию удаления, что приводит к ошибке. Итак, как я могу изменить URL, когда серверная сторона вернула ответ? Я хочу, чтобы ссылка еще была http://localhost:8080/list.htm

Спасибо Кстати, я использую Spring MVC

Джефф Чжан

Ответы [ 3 ]

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

Предполагая, что вы не возвращаете никаких данных об операции удаления, просто верните ответ HTTP 303 с заголовком Location, установленным в «list.htm». В качестве альтернативы вы можете сделать это через JavaScript на стороне клиента после получения ответа:

window.location = '/list.htm'

Я бы предложил, однако, иметь отдельную конечную точку для удаления. Использование конечной точки с именем list для удаления объекта не имеет смысла; вместо этого ссылка должна достичь конечной точки, такой как delete.htm? id = 1234 (которая может затем отправить 303 для перенаправления обратно в list.htm).

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

Шаблон для решения вашей проблемы называется Post / Redirect / Get .После получения и обработки POST (или, если хотите, DELETE) вы хотите отправить клиенту перенаправление HTTP, чтобы его браузер загружал страницу списка с помощью запроса GET.

Если вы используете стандартный UrlBasedViewResolver,можно просто сделать:

return "redirect:your-list-view";

Взгляните на раздел 15.5.3 документов Spring для получения дополнительной информации.

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

Ну, простой способ, который я могу придумать, это разместить код удаления на отдельной странице,затем перенаправить пользователя на страницу списка снова.Я не знаю много о Spring MVC, но похоже, что вы используете PHP, чтобы удалить его,судя по?в URL.(или, может быть, не в .htm, но что угодно) Перенаправление в PHP будет<?php

header( 'Location: list.htm' ) ;

?>

Предполагается, что list.htm находится в том же каталоге, что и новая страница удаления.Так что есть основная идея, используете ли вы PHP или нет, зависит от вас, я не знаю, как выглядит остальная часть вашего кода и т. Д., Поэтому я не могу помочь намного больше.

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