EL:无法访问属性方法

时间:2018-12-05 16:58:56

标签: jsf primefaces omnifaces

我的数据库有一个名为“ avatar”的BLOB字段,我在其中存储用户的照片。在我的JPA实体中,此字段表示为byte []。我只想在数组长度为正时呈现“头像”元素,但是我从javax.servlet.FilterChain.doFilter()获得下一个异常:

“异常:未找到方法长度”

这是代码:

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

如果我检查后备bean的长度,并向EL返回一个布尔值,它可以工作并渲染图像,但是我需要保持后备代码不变,这就是为什么我需要从xhtml中进行检查。 谢谢。

编辑:rendered =“#{not not empty loginView.user.avatar}”不起作用,这就是为什么我不得不移至另一个选项的原因。

2 个答案:

答案 0 :(得分:1)

尝试使用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}"/>

答案 1 :(得分:0)

长度不是方法,而是数组的属性。尝试在loginView bean中创建一个将返回类似内容的方法。

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

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