Struts 2在其名称中用点标记了名称

时间:2016-02-20 16:25:41

标签: struts2 ognl

考虑发布的数据名称为ex fromAccount.accountNo。如果我们编写自定义validator之类的

@CustomValidator(type = "AccountBelongsToUserValidator", fieldName = "fromAccount.accountNo") 

并写下AccountBelongsToUserValidator,如下所示:

  public void validate(Object object) throws ValidationException {

    String fieldName = getFieldName();
    Object value = this.getFieldValue(fieldName, object);

value将是null

struts / ognl是否可以读取名称中包含点的字段。我用formAccount\\.accountNo尝试逃避点但是没有帮助?!

相对操作不是ModelDriven

1 个答案:

答案 0 :(得分:1)

在OGNL'。'具有特殊含义,它表示属性引用。因此,如果您有<button type="button" st-reset-search>Clear Filters</button> 引用的对象并且它具有属性fromAccount,那么您可以通过accountNo访问此属性。它还用于投影,选择,子表达式求值和方法调用。你无法逃避这个角色,因为OGNL没有逃避操作符。但是你可以使用这个simbol'。'作为char字面。 OGNL还支持所有角色转义:

  

字符文字,也与Java一样:由单引号分隔,也包含完整的转义集;

OGNL按名称引用对象,如Java,名称为alphanumeric