Primefaces graphicsImage仅在第一次加载时显示图像[重复]

Posted

技术标签:

【中文标题】Primefaces graphicsImage仅在第一次加载时显示图像[重复]【英文标题】:Primefaces graphicImage only show the image the first time it loads [duplicate] 【发布时间】:2021-10-21 22:40:54 【问题描述】:

环境:

Primefaces 10 JSF 2.3

我正在尝试在模板 jsf 页面上加载个人资料图像,第一次加载工作正常,图像出现,但是当我移动到另一个页面时图像消失。 创建会话时,图像会加载到会话范围的 bean 上。 我也尝试使用字节数组上传,但结果相同。

知道问题出在哪里吗?

index.xhtml

<p:graphicImage id="img" value="#sessionBean.imgProfile"/>

SessionBean.java

@Named
@SessionScoped
public class SessionBean implements Serializable 
    ...
    private StreamedContent imgProfile;

    //-------------------------------------------------------------------------
    // Methods
    //-------------------------------------------------------------------------
    @PostConstruct
    public void init() 
        ...

        Document d = getUsuari().getDocImatge();
        imgProfile = DefaultStreamedContent.builder()
                .stream(d::getInputStream)
                .contentType(d.getTipus())
                .name(d.getFileName())
                .build();
        ...
    
    
    public StreamedContent getImgProfile() 
        return imgProfile;
    
    ...

【问题讨论】:

好像你的 bean 不是真正的会话范围,也许导入有问题。你能检查它是否正确吗?我看不到您的导入,但这是一个可能的问题。 【参考方案1】:

您当前需要每次在您的 getter 中创建一个新的 DefaultStreamedContent。 我们将为 11.0 修复此问题:https://github.com/primefaces/primefaces/issues/7730

【讨论】:

以上是关于Primefaces graphicsImage仅在第一次加载时显示图像[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Primefaces,如何禁用表单验证?

PrimeFaces语言环境无法正常工作

Primefaces 中全局更改的默认样式

Web 过滤器破坏 PrimeFaces 移动视图

PrimeFaces禁用取消按钮上的验证[重复]

PrimeFaces DataTable 中的 filterMatchMode 是如何工作的?