我有一个使用 PrettyFaces 和 PrimeFaces 的应用程序。使用 URL 模式访问一页/#{ location : navigationBean.location }/#{ year : navigationBean.year }
。
在该页面上,我有一个p:selectOneMenu
包含位置的可能值。如果我更改此菜单,我希望页面在同一年和新位置刷新。
我已经使用 AJAX 对此进行了测试,以在 navigationBean 中设置位置,然后按p:commandButton
结果pretty:view
(view
作为 url-mapping id)。这有效,但我想摆脱按钮。
我尝试了以下方法,但遗憾的是方法中的返回字符串不执行导航。
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>