Struts 2 поданных имен с точками в именах

Учтите, что опубликованные данные имеют точку в названии, например: 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 ответ

В ОГНЛ. имеет особое значение, и это означает ссылку на свойство. Так что если у вас есть объект, на который ссылается fromAccount и у него есть свойство accountNo тогда вы можете получить доступ к этой собственности по fromAccount.accountNo, Он также используется с проекцией, выбором, оценкой подвыражения и вызовом метода. Вы не можете избежать этого символа, потому что OGNL не имеет оператора escape. Однако вы можете использовать этот символ '.' как буквальный символ. OGNL также поддерживает экранирование всех символов:

Символьные литералы, также как и в Java: разделенные одинарными кавычками, также с полным набором escape-кодов;

OGNL ссылается на объекты по имени, как в Java, в Java имена являются буквенно-цифровыми.

Другие вопросы по тегам