BlogJavaを中心にした技術ネタなど。org.seasar.struts.servlet.S2ActionServlet.init(S2ActionServlet.java:61)のようなエラーが発生しました。このエラーからはわかりにくいのですが、原因はstruts-config.xmlの記述にありました。className="org.apache.struts.validator.ValidatorPlugIn">:</plug-in>----------------------------------------------------のように記述していたのですが、StrutsのValidatorプラグインより先にAutoStrutsConfigRegisterプラグインを定義していたため、AutoStrutsConfigRegisterプラグインからValidatorを参照しようとした際に、NullPointerExceptionが発生していたようです。className="org.seasar.struts.plugin.AutoStrutsConfigRegisterPlugIn">:</plug-in>----------------------------------------------------のように、Validatorプラグインを先に書くだけです。してもNullPointerExceptionが出ると原因特定に骨が折れます。コメント:0S2Strutsのアノテーションによるバリデーションでエラーメッセージ表示が正しく処理されないS2StrutsのVALIDATIONアノテーションを使って、フォームBean(DTO)の入力チェックを行なう場合。*/--------------------------------------------------な感じに定数アノテーションを書きます。(JavaSE5.0のアノテーションを使わない場合。詳細はこちらとこちら)これでハマりました。・keys・・・入力エラーメッセージのプレースホルダを置換する文字列。次のresourceがtrueの場合はメッセージリソースのキー名、falseの場合は指定した文字列そのものが使用される。・resource・・・メッセージリソースを使用する(true)か、しないか(false)を指定します。{0}は入力必須です。名前----------------------------------------------------※実際は、native2asciiでUnicodeエンコーディングが必要です。ようなメッセージリソースと組み合わせることで、入力エラー時には「名前は入力必須です。「nameは入力必須です。」と表示され、nameが名前に変換されません。あれこれ調べた結果、S2Strutsのドキュメントによると、resourceは省略可能で省略時はtrueとあるのですが、実際は省略するとfalse扱いになるようです。メッセージの置換文字列をメッセージリソースに定義した場合は、resource=trueを明示的に書く必要があります。コメント:2iPod対応カーステレオiPod対応のカーステレオを買いました。ALPINEのCDA-9856Jiと言う機種です。ALPINEは、他のメーカと違ってステレオ自体にiPodとの接続インターフェースが付いているのが特徴です。他社製品でiPodに接続するには、大抵別売りの接続機(1~1.5万円もする)が必要になるので、この点でALPINE製品は優れていると思います。