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 はまったく役に立ちませんでした。誰もこれを試したことがないようです。