EL: невозможно получить доступ к методу свойства - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть база данных с полем BLOB с именем «аватар», в котором я храню фотографию пользователя.Это поле представлено в моей сущности JPA в виде байта [].Я хочу отобразить элемент 'avatar', только если массив имеет положительную длину, но я получаю следующее исключение из javax.servlet.FilterChain.doFilter ():

"Исключение: длина метода не найдена"

Это код:

<o:graphicImage id="avatar" 
                value="#{loginView.user.avatar}" 
                dataURI="true"
                rendered="#{loginView.user.avatar.length()>0}"
 />

Если я проверяю длину от бэк-компонента, возвращая логическое значение в EL, он работает и отображает изображение, но мне нужно сохранить основуКод не изменен, поэтому мне нужно выполнить проверку из моего xhtml.Спасибо.

edit : rendered = "# {not empty loginView.user.avatar}" не работает, поэтому мне пришлось перейти к другому варианту.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Попробуйте использовать JSTL.Пространство имен Taglib:

xmlns:fn="http://java.sun.com/jsp/jstl/functions"

Использование:

<o:graphicImage id="avatar" 
            value="#{loginView.user.avatar}" 
            dataURI="true"
            rendered="#{fn:length(loginView.user.avatar) > 0}"/>
0 голосов
/ 05 декабря 2018

Длина - это не метод, а свойство массива.Попробуйте создать метод внутри бина loginView, который будет возвращать что-то вроде этого.

public boolean isAvatarLoaded() {
    return this.user.avatar.length > 0;
}

<o:graphicImage id="avatar" 
                value="#{loginView.user.avatar}" 
                dataURI="true"
                rendered="#{loginView.isAvatarLoaded()}"
 />
...