Как управлять URL-адресами на ошибках в Spring MVC? - PullRequest
1 голос
/ 17 февраля 2011

У меня есть веб-приложение с Spring MVC 3.0.4.RELEASE.

У меня есть следующий сценарий:

1) Я ввожу поисковую веб-страницу с помощью GET с путем: search.html
2) Я нажимаю кнопку поиска и выполняю POST для пути: searchResults.hmtl
3) Когда я нажимаю на результат поиска, я делаю POST для searchResults / enterResult.html
4) Предположим, что контроллер вызывает исключение ...
5) Мне нужновернуться на страницу searchResults.html с предыдущим поиском.

Я не могу использовать forward, поскольку он поддерживает путь searchResults / enterResults.html, поэтому, если я щелкаю по результату поиска, он создает следующий несуществующий путь:/searchResults/enterResults.html

знаете ли вы, как справиться с этой проблемой?

1 Ответ

2 голосов
/ 17 февраля 2011

Если возникает ошибка, почему бы не сделать redirect:searchResults.html вместо пересылки?Если вы хотите отправить сообщение об ошибке обратно для отображения на этой странице, вы можете добавить их в качестве параметров, например: redirect:searchResults.html?error_message=yada.

Кстати, если вы избегаете использовать относительный URL-адрес при построении действия формы результатов поиска, вы не должны сначала получить проблему searchResults/searchResults/enterResults.html.Похоже, что вы делаете POST на enterResults.html вместо /your-app/searchResults/enterResults.html Если вы исправите это, вам не нужно будет выполнять перенаправление, как я упоминал выше.вот:

... вместо этого ...

<form action="enterResults.html" method="POST">
    ...
</form>

... сделать это ...

<form action="${pageContext.request.contextPath}/searchResults/enterResults.html" method="POST">
    ...
</form>

Таким образом, это нене имеет значения, сохраняет ли перенаправленный URL предыдущий URL или нет.Вы всегда будете ПОСТУПАТЬ к правильному действию.

...