POJO Form

以下の内容は、すでに前に少し話したやつなんですけど、、、次のバージョン(1.2.4)に盛り込みたいなーっと思って。

Strutsでは、POJO Formを扱うときはBeanValidatorFormにラップ(アダプタ?)されるんだけど、S2StrutsではPOJO ActionとかInitタグとかにバインドするときに、Request(とかSession)にBeanValidatorFormだった場合、中身を取り出してPOJOを設定するようになってる。
Requestにセットする(戻す)ときは、BeanValidatorFormとしてすでにセットされている場合はラップしなおして格納するんだけど、なかったものはBeanValidatorFormにラップしないで格納してしまう。
だからRequestに同じ名前でBeanValidatorFormにラップされたものとラップされていないもののどちらかが交互に格納されるかもしれない問題がある。。。

ってことでRequestにセットするときのBeanValidatorFormにラップする条件を変えて、struts-config.xml(実際はModuleConfigだけど)でプロパティ名がActionFormとして登録されているかを確認して登録されてたらラップして、登録されていなければそのままって感じにしようってやつ


っというか伝えるのがヘタだなこりゃ。

[追記]
ためしに作ってみたけど、ちょっとマズイかも。
無設定で少し多めにActionFormとして登録されている場合、ActionFormとして扱っていないものまでBeanValidatorFormにラップされてしまう。きちんとAutoRegisterで指定してれば良いんだけど、たぶん多めに登録している人が多いような気がするし。
どうしても困る場合があったら、TagLibを提供するってのもありかも。
1.2.4に含めるのはやめよう。1.3.0には含めるかもしれないけど。