システム開発で思うところ

Javaで主にシステム開発をしながら思うところをツラツラを綴る。主に自分向けのメモ。EE関連の情報が少なく自分自身がそういう情報があったら良いなぁということで他の人の参考になれば幸い

JSFで2重Submit対策(続)

前回やっていないこととした「入力画面まで戻ったFormの更新抑止」について対応をしてみました。

vermeer.hatenablog.jp

やっていないことで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();
}

実行結果

f:id:vermeer-1977:20180513101845p:plain

f:id:vermeer-1977:20180513101924p:plain

f:id:vermeer-1977:20180513102005p:plain

「戻る」→「戻る」で、入力画面まで戻ってユーザー名を更新します。

f:id:vermeer-1977:20180513102136p:plain

f:id:vermeer-1977:20180513102206p:plain

確認画面で、ユーザー名が更新されていないことが確認できました。

Code

Bitbucket

さいごに

これくらいなら、前回の記事にまとめても良かったかも。。