2016-09-04 9 views
-2

xhtmlページのような行がある場合はいつでも、JSF 2.2では:<h:commandButton value="Click Me!" action="whatever" />。このボタンをクリックすると、ブラウザが「前進」して、戻るボタンをクリックしてそのxhtmlページに留まることができます。つまり、commandButtonを10回クリックすると、ブラウザの戻るボタンを押すことで10回戻ることができます。 ボタンでページを変更しないようにするにはどうすればよいですか?私はこのようなボタンをクリックすることができ、場合によってはページを変更し、ブラウザの履歴にステップを踏み出さずに現在のページに留まるようにしたいと考えています。ページを変更せずにマネージドBean関数を呼び出す

+2

ajaxを使用して、ドキュメントを見てください –

答えて

2

問題を解決するには、AJAXを使用することが考えられます。

フォーム要素内でコマンドボタンを使用すると、クリックすると、ポストリクエストを含むフォームデータがサーバーに送信されます。

<h:form> 
    <h:inputText id="inputId" value ="#{testController.message}"></h:inputText> 
    <h:commandButton value="submit" action="#{testController.reverse}" /> 
</h:form> 

コマンドボタン内でAJAX要素を使用すると、execute属性で指定されたデータだけがサーバーに送信されます。レスポンスには、レンダリング属性で指定されたhtmlファイルの一部のみが含まれます。この部分は、既存のhtmlファイルに挿入されます。 AJAXを使用しないと、ページ全体がリフレッシュされないため、ブラウザの履歴には影響しません。

<h:form> 
    <h:inputText id="inputId" value ="#{testController.message}"></h:inputText> 
    <h:commandButton value="inputId" action="#{testController.reverse}" > 
     <f:ajax execute="inputId" render="outputId" /> 
    </h:commandButton> 
</h:form> 

<h:outputText id="outputId" value="#{testController.output}"/> 
+0

commandButtonをフォームに配置するだけでは不十分です。それはすでに私のxhtmlのケースです。 – TrackerSB

+0

idの代わりに '@ form'を使うと、そのトリックを行います。 – TrackerSB

+0

render属性を使用すると、Ajaxリクエスト後にリフレッシュされるコンポーネント以上を定義できます。 @formを使用すると、フォーム内のすべてのコンポーネントが更新されます。 – qwerty

関連する問題