2

PrettyFacesとPrimeFacesを使用したアプリケーションがあります。URLパターンを使用して1つのページにアクセスします/#{ location : navigationBean.location }/#{ year : navigationBean.year }

そのページには、p:selectOneMenu場所の可能な値が含まれています。このメニューを変更した場合、同じ年と新しい場所でページを更新したいと思います。

p:commandButtonAJAXを使用してnavigationBeanで場所を設定し、結果pretty:viewviewurl-mapping id)でaを押すことでこれをテストしました。これは機能しますが、ボタンを削除したいと思います。

次のことを試しましたが、残念ながら、メソッドのreturnStringはナビゲーションを実行しません。

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>
4

1 に答える 1

2

(ajax)アクションリスナーからナビゲーション結果を返すことはできません。で使用されている実際のアクションメソッドからのみ返すことができます<h:commandButton action>

NavigationHandler#handleNavigation()代わりに使用してください。

public void navigate() {
    FacesContext context = FacesContext.getCurrentInstance();
    context.getApplication().getNavigationHandler()
        .handleNavigation(context, null, (location != null) ? "pretty:view" : null);
}
于 2012-09-10T15:20:55.580 に答える