0

p:menuItem でこの問題が発生しました - PF 3.3.1、PrettyFaces 3.3.3、および JSF/Mojarra2.1 を使用しています。

したがって、現在のページから「ID」パラメーターを渡す必要がある p:menuItems のセットがあります。ただし、/page/targetPage?id=id&faces-redirect=true という形式の URL を作成したくありません。私がやりたいことは、ページ アクション ハンドラで、問題の URL にリダイレクトすることです。ただし、問題は、結果のリダイレクトが最後に windowId を添付し、targetURL にアクセスできないことです!

私のフェイスレットで:

<p:menuitem action="#{myActions.performAction}" ajax="false" value="navigateToThisAction"/>

私のバッキングビーンで:

public String performAction() {
    return navigate("pretty:myAction");
}

protected String navigate(String mappingId) {
    HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
    PrettyContext context = PrettyContext.getCurrentInstance(request);
    PrettyURLBuilder builder = new PrettyURLBuilder();

    UrlMapping mapping = context.getConfig().getMappingById(mappingId);
    String targetURL = builder.build(mapping, true, getId());

    try {
        FacesContext.getCurrentInstance().getExternalContext().redirect(targetURL);
    } catch (IOException ioe) {
        System.out.println("Error redirecting..." + ioe.getMessage());
    }
    return null;

}
4

2 に答える 2

0

への呼び出しによって windowId=xxxxx が追加されている場合は、FacesContext.getCurrentInstance().getExternalContext().redirect(targetURL);おそらくフレームワークをチェックして、それを追加しているものを確認する必要があります。PrettyFaces は windowId パラメータを追加しないので、それは何か別のものであり、使用している他のライブラリであると推測しています。特定のページで手動で無効にする方法があるかもしれません。

于 2012-07-18T17:46:00.887 に答える
0

問題は、リダイレクトする前に URL の前に request.getContextPath() がないことであることがわかりました - すべての応答に感謝します!

于 2012-07-20T22:12:19.213 に答える