JSF页面自动调用一个方法两次

JSF页面自动调用一个方法两次,jsf,primefaces,ejb,Jsf,Primefaces,Ejb,我对JSF有一个奇怪的问题 我有一个PrimeFacesGraphicImage,它调用一个方法来获取图像 现在,我已经编写了这个方法,只供这个组件使用,所以我希望它只被调用一次,但令人惊讶的是: 在同一页中,此方法被调用两次,参数不同 <pou:graphicImage rendered="true" height="150" style="border: 1px dotted; margin-left: 150px;" value="#{userDataBean.getAvatar()

我对JSF有一个奇怪的问题

我有一个PrimeFacesGraphicImage,它调用一个方法来获取图像

现在,我已经编写了这个方法,只供这个组件使用,所以我希望它只被调用一次,但令人惊讶的是: 在同一页中,此方法被调用两次,参数不同

<pou:graphicImage rendered="true" height="150" style="border: 1px dotted; margin-left: 150px;" value="#{userDataBean.getAvatar()}" width="150"/>

public StreamedContent getImage(Utente u) throws IOException {
    File avatar = new File(FacesContext.getCurrentInstance().getExternalContext().getRealPath("/resources/images/no_avatar.png"));
    if (u.getFoto() == null) {
        return new DefaultStreamedContent(new ByteArrayInputStream(Files.readAllBytes(avatar.toPath())), "image/jpeg");
    }
    return new DefaultStreamedContent(new ByteArrayInputStream(u.getFoto()), "image/jpeg");
}

public StreamedContent getImage() throws IOException {
    return getImage(utente);
}
因此,getImageUtente u是一种通用方法,可以毫无问题地工作

getImage中的utente是从{request.getParameter'user}获取的用户

现在,我使用此方法在用户的配置文件中显示avatr

问题是,当我打开profile页面时,会调用getImage两次: 第一次,值是正确的,它加载用户的化身。 但是它第二次被调用,这次Utene取{loginBean.Utene}的值,这是登录用户,导致这行显示登录用户的化身,而不是我们想要显示的用户的化身

所以问题是: 即使我只写了一次,我怎么能阻止这个方法被调用一次呢


我不明白发生了什么:|

您提供的代码无法再现您的问题