У меня есть приложение, использующее PrettyFaces и PrimeFaces. Доступ к одной странице осуществляется с использованием шаблона URL /#{ location : navigationBean.location }/#{ year : navigationBean.year }
.
На этой странице у меня есть p:selectOneMenu
, содержащий возможные значения местоположения. Если я изменю это меню, я хочу, чтобы страница обновлялась с тем же годом и новым местоположением.
Я протестировал это с помощью AJAX, чтобы установить местоположение в navigationBean, а затем нажал p:commandButton
с результатом pretty:view
(view
- это идентификатор сопоставления URL-адресов). Это работает, но я хочу избавиться от кнопки.
Я пробовал следующее, но, к сожалению, возвращаемая строка в методе не выполняет навигацию.
JSF:
<p:selectOneMenu value="#{navigationBean.location}">
<p:ajax listener="#{navigationBean.navigate}"/>
<f:selectItems value="#{locationBean.locations}"/>
</p:selectOneMenu>
Поддерживающий компонент:
public String navigate(AjaxBehaviorEvent event)
{
return (location != null) ? "pretty:view" : null;
}
Конфигурация PrettyFaces:
<url-mapping id="view">
<pattern value="/#{ location : navigationBean.location }/#{ /\\d{4}/ year : navigationBean.year }/"/>
<view-id value="/view.xhtml"/>
</url-mapping>