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 имена являются буквенно-цифровыми.