setRequest(), setResponse()でエラー

ActionクラスにsetRequest, getRequestというメソッドを定義すると

例外 javax.servlet.ServletException: getInstanceMode
原因 java.lang.UnsupportedOperationException: getInstanceMode

とExceptionが発生します。ちゃんとメソッドも実行されてバインディングされているのに、どこでエラーになってるんだろう?と不思議に思った所でおなかすいた。

本当にやりたかったのはValidator以外で論理エラーをエラーメッセージに追加したいだけなんですけど、ValidatorExceptionをスローしても普通にスタックトレース出てしまいますし、FacesContext.addMessage()を使いたくてもFacesContextの取得方法が分からない。すみません、根本的に分かってない子なんです(^^;。

#追記:簡単だった。
Actionクラスで任意のエラーを発生させたければ

throw new AppRuntimeException("resource.key");

と書いて、ExampleにあるActionThrowsInterceptorをアスペクトしてあげればちゃんと画面にエラーメッセージが出ました!任意のエラーをActionから生成するにはExampleのように自分で作る必要があるみたいですね。便利なので取り込もう。

#複数のエラーを一気に追加したい場合は、やっぱりFacesContextに直接addMessageですね。staticなメッセージを追加するメソッドがあるクラスを作っても良いかも。