0

JSF ページに inputText と commandButton があります。ユーザーが何かを入力すると、同じ機能を持つ inputText と commandButton を持つ結果ページにリダイレクトされます。commandButton は、クリックされたときに何らかのアクションを実行し、inputText 値をベース URL に追加することによって構築された REST URL (結果ページ) にリダイレクトする必要があります。私は多くのことを試しましたが、2ページ目でこれを機能させることができませんでした. 私が今まで試したことは次のとおりです。

  1. commandButton のアクション内でメソッドを呼び出し、リダイレクト用の URL を返します。これは、Bean に inputText 値があるためです。AJAX を使用して、キーアップ イベントで commandButton をレンダリングしました。これはページ1では機能しますが、ページ2では機能しません。問題は、ユーザーが文字を入力するたびにボタンがレンダリングされ、ユーザーがボタンをクリックしたときにのみメソッドを呼び出したいので、望ましくないメソッドが呼び出されることです。 .

  2. Bean にメソッドを作成し、そこにすべてのメソッドを入れました。メソッド PostConstruct を作成することと、メソッドを呼び出すために preRenderView を使用して f:event を使用することの両方を試みました。ここでも AJAX では、ユーザーが何かを入力するたびにメソッドが呼び出されるため、これは機能しません。

4

1 に答える 1

1

問題は、ユーザーが文字を入力するたびに、ボタンがレンダリングされ、ユーザーがボタンをクリックしたときにのみ呼び出す必要があるため、メソッドが呼び出されないことです。

ボタンをレンダリングしないでください。<f:ajax render>as のような属性で一般的すぎるクライアント識別子を使用した可能性があります@form。ボタンを除外する、より具体的なものに置き換えるだけです。


ここでも AJAX では、ユーザーが何かを入力するたびにメソッドが呼び出されるため、これは機能しません。

ajax リクエストでないかどうかを確認してください。

if (!FacesContext.getCurrentInstance().getPartialViewContext().isAjaxRequest()) { 
    // Not an ajax request.
}
于 2012-06-09T21:13:03.710 に答える