我在Struts 2中使用“访问者”验证器时遇到问题。如果我对“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”方法(它成功完成!),它返回一个String。
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表达式。
任何想法为什么?谷歌一直没有任何帮助。似乎没人试过这个。