Что касается конкретного исключения, то вызов методов, не относящихся к свойствам (т. Е. Методов, отличных от методов получения / установки), поддерживается только с EL 2.2, который является частью Servlet 3.0 / JSP 2.2. Кажется, вы используете старый JSF 1.x и, следовательно, старый Servlet 2.5 / JSP 2.1. В основном вы получаете синтаксическую ошибку EL.
На самом деле, вам не нужен EL 2.2 для этого. Просто используйте ключевое слово empty
.
rendered="#{not empty bean.searchString}"
Однако этот подход также не сработает. Атрибут rendered
будет проверяться на стороне сервера, когда HTML-код должен быть сгенерирован и отправлен в браузер, а не во время событий на стороне клиента, как вы, вероятно, ожидаете (щелчок правой кнопкой мыши в браузере, Просмотр источника , вы видите какой-нибудь код JSF?). Вам необходимо использовать JavaScript, чтобы проверить длину входного значения в onkeyup
поля или onsubmit
вызова Ajax и вернуть false
соответственно.
<h:inputText ... onkeyup="return (!!value)">
или (не гарантируется, что это работает, я не знаю, с какой стороны, какую разметку он генерирует)
<h:inputText ...>
<a4j:support ... onsubmit="return (!!value)" />
</h:inputText>
Первый !
преобразует его в инвертированный boolean
, а второй !
реверсирует его. Таким образом, вы получите полноценный результат возврата boolean
в зависимости от наличия какого-либо значения. Если это false
, то остальные функции onkeyup
(такие как вы указали с помощью <a4j:support>
) будут заблокированы.