Eclipse Facelet HTML Validator: не может применять операторы выражения к привязкам методов

Анализатор HTML Eclipse Facelet сообщает об ошибке "Невозможно применить операторы выражения к привязкам к методу" для следующей строки:

<ui:fragment rendered="#{!empty managedBean.getSomething('ENUM_VALUE', someInt)}">

Я нашел это в справке Juno (я использую Kepler):

Applying operator to method binding
#{bean.action * 5}
If bean.action indicates a method "action()" on bean, then it is not legal EL to treat its result as a value. In the example, multiplying action by 5 attempts treat it is as a value.

У меня возникли проблемы с пониманием того, почему это не легально рассматривать его результат как ценность? Какой правильный способ написать EL тогда? Спасибо!

Ответы

Ответ 1

Если вам нравится, вы можете скрыть сообщение об ошибке, установив

WindowPreferencesWebJavaServer Faces ToolValidation -> General Problems

значение Applying method operator to binding - Ignore.

Ответ 2

Попробовали ли вы положить paranthesis вокруг вашего метода. Вот так:

#{!empty (managedBean.getSomething('ENUM_VALUE', someInt))}

Таким образом, JSF оценивает метод и затем проверяет значение null или empty.

Я не эксперт в JSF, но у меня была такая же проблема в одном из похожих выражений:

#{some_method() == 0 and some_other_method() eq 'some value'}

Я видел ту же проблему, что и Eclipse, но страница работала правильно. После того, как я положил paranthesis вокруг обоих моих выражений, Eclipse не показывал эту ошибку.