エラーメッセージの表示順

SAStruts でバリデーションエラーとかの表示順についてはまる。アクションフォームで複数の public フィールドに対してアノテーションをくっつけて、バリデーションエラーを起こすと、public フィールドの順番に表示される(まぁ、これも Java の仕様的には保証されてはない気がするけど、Sun の JVM では順番どおりで出してくれるから良しとする)。

っで、そのアクションフォームに public フィールドに加えて、それらの setter/getter とか記述しちゃうと、順番がおかしくなる・・・。原因は、S2 の BeanDesc で setupPropertyDescs()、setupMethods()、setupFields() の順番に実行していく過程で setupPropertyDescs() で Class#getMethods() の順番で、先に propertyDescCache が作られてしまう・・・(というわけで public フィールドの記述した順じゃなくなる)。そんで、 SAStruts の ActionCustomizer の setupValidator でバリデータが突っ込まれているみたい。というわけで、順番が不自然になる(場合がある、という方が正しいのか)・・・。

はて、どうしたものか・・・。BeanDesc のフィール順で並び替えるとかかな(これも Java の仕様的には保証されないと思うけど、Sun の JVM だと public フィールド順になると思うから、これはこれで良しとしておく)。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です