Я пытаюсь реализовать шаблон post-redirect-get в Моджара. У меня есть две страницы с одинаковым заголовком и поисковой формой.
Обе страницы включили в общий шаблон эти два кода
<f:metadata>
<f:viewParam name="searchString" value="#{searchBean.searchString}" />
<f:viewParam name="mutation" value="#{searchBean.mutation}" />
</f:metadata>
...
<h:form id="searchForm">
<div class="search">
<p:autoComplete id="autocomplete" minQueryLength="2" queryDelay="250" completeMethod="#{searchBean.complete}" value="#{searchBean.searchString}" />
<p:watermark for="autocomplete" value="#{msg.search}" />
<p:commandButton action="search?faces-redirect=true&includeViewParams=true" value="#{msg.searchIt}">
<f:setPropertyActionListener target="#{searchBean.mutation}" value="#{facesContext.viewRoot.locale}" />
</p:commandButton>
</div>
</h:form>
Когда я отправляю форму из article.xhtml
, URL-адрес search.xhtml
, когда я отправляю форму из search.xhtml
, я получаю ожидаемый URL с шаблоном /search.xhtml?searchString=stringSearch&mutation=cs
Я что-то упустил?
Редактировать: поддерживающий бин использует некоторую комбинацию между просмотром и вспышкой (бин сохраняется в обеих областях и извлекается из той, где он выжил). После отладки кажется, что JSF получает параметры до того, как они будут сохранены в bean-компоненте (в неправильном случае использования).