1

これが私が使用するコードです:

request.jsf

<h:form>
  <!-- form inputs ... --> 

  <h:commandButton id="btnStart" value="START" action="#{bean.handleForm}">
    <f:ajax execute="@form" render="message" />
  </h:commandButton>
</h:form>

ボタンをクリックするbtnStartと、フォームが送信され、Beanによって正しく処理されます。残念ながら、ブラウザのURLバーは引き続き表示されますhttp://myhost.com/request.jsfが、コンテンツにはによって返された結果が表示され#{bean.handleForm}ます。

URLバーを正しく更新するにはどうすればよいですか?

4

1 に答える 1

2

これは、フォームが現在のURLに送信されており、JSFが応答のリソースを変更するだけだからです。URLを新しいリソースの1つに変更する場合は、Webブラウザに新しいリクエストを送信するように指示する必要があります。リダイレクトを実行することでそれを行うことができます。JSF 2ではfaces-redirect=true、結果にクエリ文字列として追加する必要があります。

public String handleForm() {
    // ...

    return "nextpage?faces-redirect=true";
}

または、それが本当にべき等ではない要求である場合は、同じページに固執し、必要に応じてインクルードによって結果をまったく同じページに条件付きで表示します。nullその後、アクションメソッドはまたはを返すことができvoidます。

于 2012-06-22T01:54:10.147 に答える