JSFで、
<h:commandButton immediate="true"
とかにしておくと、このボタンを押してsubmitしたときはValidationが回避される。
それは間違いではないのだが、安易に使っていたらハマってしまった。
immediate="true"にすると、アクションメソッドの実行が、バッキングビーンの更新より先に行われるようだ。
そのためアクションメソッドでビーンの値を取得しても、古い値が取れるので、現在の入力値を期待した処理を行っている部分が失敗していた。
immediate="true"は、入力チェックやバッキングビーンの更新をすっ飛ばして、とっととアクションメソッドを実行したい!という時に使うのだろうな。戻るボタンとか。