前回やっていないこととした「入力画面まで戻ったFormの更新抑止」について対応をしてみました。
やっていないことで2つ目に挙げた案である
immediate
を使うやり方です。
出来れば xhtmlに手を加えないやり方の方が良いかなぁ、と思っていたのですが 実際に記述してみて
まぁ、これくらいなら そこまで手が込んでいるわけではない
immediateの挙動は 基本的なJSFの仕様の範疇なので何が起こるのか想像しやすい
ということで、このやり方で良いだろう、と落ち着きました。
使用方法
情報を反映したくないアクションのトリガーに
immediate="#{doubleSubmitLifecycle.submitted}"
を記述します。
<p><input type="submit" value="確認" jsf:action="#{doubleSubmitAction.fwConfirm()}" jsf:immediate="#{doubleSubmitLifecycle.submitted}"/></p>
実装
前回の時点で、すでに当該メソッドがありました。
public boolean isSubmitted() { return this.doubleSubmitState.isSubmitted(); }
実行結果
「戻る」→「戻る」で、入力画面まで戻ってユーザー名を更新します。
確認画面で、ユーザー名が更新されていないことが確認できました。
Code
さいごに
これくらいなら、前回の記事にまとめても良かったかも。。