1

ページ A からページ B に移動しようとしています。ページ B に移動している間、以下のように configurableNavigationHandler を使用してパラメーターを渡します

public void navigate(String outcome) {
    FacesContext fc = FacesContext.getCurrentInstance();
    ConfigurableNavigationHandler nav = (ConfigurableNavigationHandler) fc
            .getApplication().getNavigationHandler();
    nav.performNavigation(outcome+"?faces-redirect=true&includeViewParams=true&oldPage=hello");
}

ページ B で戻るをクリックすると、パラメーター値を取得し、ユーザーをそれぞれのページに移動する必要があります。ただし、要求パラメーターの取得中に null 値を取得します。

public String navigateToOldPage() {
    FacesContext fc = FacesContext.getCurrentInstance();
    String oldPage = fc.getExternalContext().getRequestParameterMap().get("oldPage");
    return oldPage;     
}

誰か私に提案してもらえますか?

4

1 に答える 1

0

oldPage基本的に、間違った HTTP リクエスト、つまり、ページ B 自体が表示されているものではなく、ページ B で送信されたフォームのパラメーターにアクセスしようとしています。

基本的に 2 つのオプションがあります。

  1. 以下を使用して、ページ B の表示中にリクエスト パラメータを Bean プロパティとして設定します<f:viewParam>

    <f:metadata>
        <f:viewParam name="oldPage" value="#{bean.oldPage}" />
    </f:viewParam>
    

    と(@ViewScoped豆の上に)

    public String navigateToOldPage() {
        return oldPage;
    }
    

  2. UICommand次を使用して、フォーム送信を担当するコンポーネントにリクエストパラメーターを保持します<f:param>

    <h:commandButton ... action="#{bean.navigateToOldPage}">
        <f:param name="oldPage" value="#{param.oldPage}" />
    </h:commandButton>
    

    または、それが実際の G​​ET 要求である必要がある場合は、<h:button>(または<h:link>)を使用します。

    <h:button ... outcome="#{param.oldPage}" />
    
于 2013-01-07T17:59:57.733 に答える