S2Strutsでかいはつちゅう

いやーもう忙しいのなんのってちゃんと定時+30分には意地でも帰ってますけどね、疲れちゃってもう、うち帰って飯食って子供風呂入れて寝かしつけてる内にそのまま一緒に朝まで寝ちゃったの毎日ですよ・・・。Mao〜とか頭の中じゃ考えてんですけどねぇ、Mao〜だけに「わしゃかなわんよ」って塩梅です。Seasarコミッタの方々には本当に頭が下がります。

因みにハクション大魔王の「わしゃかなわんよ」は高瀬実乗って戦前のコメディアンの人の決めゼリフが元ネタなんですよ。勉強になりましたね。アノネーワシャーネーあきれたぼういずのCDで坊屋三郎先生の物真似でしか知りませんけどネー、と思ったら山中貞夫の『百万両の壷』に出てた。あれがそうか!いやー感激。

てな話はおいといて。

S2Strutsというか、Strutsというか、commonsのBeanUtilsの注意点というかなんだろうこれは。

Dxoめいたものをですね、BeanUtils使って書いてるんですけど、copyProperties()、コピー元クラスのInteger型のプロパティにNullが入ってると、コピー先には「0」が入っちゃうんですなー。いやーちょっとはまった。

まあそういうもんなのかと。あきらめました。

次、HTMLにコンボボックス(というかSELECTタグ)がありまして、それの一番上の要素は「選択して下さい」みたいなタイトルになってる訳です。当然「value=""」な訳で、こいつが選ばれてたら、無設定S2StrutsのValidatorのアノテーションで@Requiredにしてればひっかかるよなーと思ったらいやー通る通る。

あれーと思って見たら、このコンボボックス、Integer型プロパティに値を突っ込むんですけど、「value=""」だとDtoには「0」に入って来ちゃうんですなー。えーと思って、じゃあ「value="null"」って書いておくよ、と思ったら、やっぱり「0」がやって参りました。んー。

ここでもBeanUtilsさん大活躍です。

てな訳で、

@Mask(pattern="[^0]",messageKey="aada.kouda.honnjara")

と、@Maskでひっかけてやってなんとか。

なんて、もしかして常識?もっと良い解決法があったりして。