2015-07-17 4 views
0

Я использую весеннее выражение для анализа значений в классе (присутствует в банке). После того, как я прочитал это значение, я установил его в целевом классе [типичный пример использования весеннего выражения]. Тем не менее, все значение поля из класса в jar может быть проанализировано за исключением, булево значение. В классе источника, он объявлен как это:Разбор весеннего выражения с использованием контекста оценки для логического поля

boolean isVerified; 

//getter 
public isVerified() { 
    return isVerfied; 
} 

код Spring-выражение, чтобы прочитать это значение:

Expression sourceExp = parser.parseExpression(<source field string>); 
sourceExp.getValue(sourceContext); 

и это не удается. Сообщение Не удается найти недвижимость isVerified

Мой вопрос, потому что весна ищет метод isIsVerified, а не isVerified? Если это не так, что может быть причиной неудачи?

+0

Вы уже пытались использовать 'boolean verified;'? – Tom

+0

Я не могу, так как ящик (имеющий класс) предоставляется мне другой командой, и я не могу изменить эту банку –

ответ

0

Вы не показываете свое выражение, но Spell использует семантику JavaBean при доступе к свойствам bean-компонента. Он ничего не знает о внутренностях ссылочного компонента. Когда он встречает запрос на имущество ...

"x.foo" 

он пытается найти сорбент getFoo() (любого типа возвращаемого значения), и если это не найдено, он ищет isFoo(), если она возвращает логическое значение.

Я подозреваю, что вы пытаетесь использовать x.isVerified. Нет такого геттера; вам нужно использовать x.verified, или вы можете вызвать сам метод x.isVerified().

+0

. как упоминалось в проблеме, имя поля isVerified; Так что мне нужно использовать x.isIsVerified() для этого случая? –

+0

Имя поля не имеет значения; SpEL использует приемник. Поэтому вам либо нужны 'x.verified', либо' x.isVerified() '. См. Https://github.com/spring-projects/spring-framework/blob/master/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java#L349. –

Смежные вопросы