JSF页面自动调用一个方法两次
我对JSF有一个奇怪的问题 我有一个PrimeFacesGraphicImage,它调用一个方法来获取图像 现在,我已经编写了这个方法,只供这个组件使用,所以我希望它只被调用一次,但令人惊讶的是: 在同一页中,此方法被调用两次,参数不同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()
<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}的值,这是登录用户,导致这行显示登录用户的化身,而不是我们想要显示的用户的化身
所以问题是:
即使我只写了一次,我怎么能阻止这个方法被调用一次呢
我不明白发生了什么:|您提供的代码无法再现您的问题