Я хочу проверить свой url с помощью поверхностей и получить HTTP 404, если объект не существует. Мой URL должен выглядеть как /code/788?date=13.12.2015
.Проверка правильности URL-адресов
Мой prettyfaces конфигурации выглядит примерно так:
<url-mapping id="code">
<pattern value="/code/#{/[0-9]+/ code: prettyUrlCheckBean.newCode}" />
<query-param name="date">#{navigationBean.calendarDateAsString}</query-param>
<view-id value="/content/codes.jsf"/>
<action>#{prettyUrlCheckBean.checkEntryUrlWithNewCode}</action>
</url-mapping>
В настоящее время действие будет принимать параметр из бобов, смотрите, если код существует на определенную дату в базе данных, а затем перенаправить либо на главную страницу (с параметры, установленные в сеансе) или на странице 404. Однако коды HTTP будут 302
и 200
вместо прямого 404
.
Я пробовал валидатор как по шаблону, так и по параметру query-param, но в любом случае у меня нет доступа к другой части URL-адреса и поэтому не могу проверить, существует ли этот объект.
Версия для моих приложений - 2.0.12.Final.
спасибо! Прекрасно работает! Важно вернуть null (как показано в вашем примере), в противном случае я получаю java.lang.IllegalStateException: не удается вызвать sendRedirect() после того, как ответ был исправлен. – leo