1

Struts 2 で「Visitor」バリデーターを使用すると問題が発生します。「context」パラメーターをハードコーディングすると、正しく機能します。問題は、これを OGNL 式にする必要があるという事実にあります。

例えば:

<validators>
<field name="model">
    <field-validator type="visitor">
        <param name="context">%{myAlias}</param>
        <param name="appendPrefix">false</param>
        <message />     
    </field-validator>
</field>
</validators>

これにより、私のアクションで「getMyAlias」メソッドが呼び出されます (これは正常に実行されます!)。これは文字列を返します。

public class ValidationAction extends ActionSupport implements ModelDriven<ValidationModel>{

    private ValidationModel xyz = new ValidationModel();

    @Override
    public String execute() throws Exception {  
        return SUCCESS;
    }

    @Override
    public ValidationModel getModel() {
        return xyz;
    }

    public String getMyAlias(){
        return "b";
    }

}

「ValidationModel-b-validation.xml」という名前の検証 xml ファイルを作成し、ValidationModel.java ファイルと共にパッケージに配置しました。「%{myAlias}」を「b」に変更するだけで、検証が成功します。

したがって、訪問者バリデーターが機能することはわかっていますが、OGNL 式では機能しません。

理由はありますか?Google はまったく役に立ちませんでした。誰もこれを試したことがないようです。

4

0 に答える 0