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なメッセージを追加するメソッドがあるクラスを作っても良いかも。