[Seasar-user:5174] [S2Struts] DispatchAction使用時のValidationについて

Shinichiroh Takezaki [Virtual Technology] [E-MAIL ADDRESS DELETED]
2006年 11月 17日 (金) 11:34:21 JST


竹崎と申します。
永島さん、先日はいろいろありがとうございました。

今度はS2StrutsのValidationで困っています。

プロジェクトの方針で以下のような前提があります。

<前提>
1) DispatchActionで、struts validator(commons validator)を使う
2) メソッドごとのValidationを行う必要があり、validwhenを使って、commandパラメータの値をチェックすることで対応したい。
3) commons validatorの修正は行いたくないが、validation-ruleの追加はよい。

以下のことが確認できています。

<確認できていること>
1) Actionの定数アノテーションでvalidation=trueとすることでstruts validatorは有効となる
2) 以下のように書くことで、メソッドretrieve1を実行するときのmessageの存在チェックはできる

<form name="fooForm">
            <field property="command"
                    depends="required">
                <arg key="fooForm.command"/>
            </field>
            <field property="message"
                    depends="validwhen">
                                <arg0 key="タイトル" resource="false" />
                                 <var>
                                        <var-name>test</var-name>

<var-value>((command!='retrieve1')or(*this* != null))</var-value>
                                </var>
            </field>
        </form>

<やりたいこと>
1) validawhen以外のルールで、例えば、maskなどと組み合わせて使いたい
     例えば、「retrieve1の実行時は、messageが英数」といったチェックを以下のように書いても当然ですが機能しません。

<form name="fooForm">
            <field property="command"
                    depends="required">
                <arg key="fooForm.command"/>
            </field>
            <field property="message"
                    depends="validwhen,mask">
                                <arg0 key="タイトル" resource="false" />
                                <var>
                                        <var-name>test</var-name>

<var-value>((command!='retrieve1')or(*this* != null))</var-value>
                                </var>
                                <var>
                                        <var-name>mask</var-name>
                                        <var-value>^[0-9a-zA-Z]*$</var-value>
                                </var>
            </field>
        </form>

s2strutsというより、strutsのvalidationの話ですが、s2strutsを利用される方もきっと直面する問題かと思います。s2strutsでこのような複合的なルール設定のやり方をご存知でしたらお願いします。



Seasar-user メーリングリストの案内