0

我有一个带有文件上传的简单表单。文件上传和支持 bean 工作完美,但我想在上传后显示上传的图像。我使用了 ui:repeat但只有第一张图片重复所有上传!我使用了多个 p:graphicImage 而不是 ui:repeat,结果绝对正确。但我必须使用 ui:repeat 或 p:galleria。

这是 ui:repeat usage with wrong result

<ui:repeat value="#{applicationImagesBean.screenidx}" var="idx">
    <p:graphicImage value="#{applicationImagesBean.getScreen(idx)}" height="320"/>
</ui:repeat>

这是多个 p:graphicImage 是正确的,但这不是我想要的

<p:graphicImage value="#{applicationImagesBean.getScreen(0)}" height="320"/>
<p:graphicImage value="#{applicationImagesBean.getScreen(1)}" height="320"/>
<p:graphicImage value="#{applicationImagesBean.getScreen(2)}" height="320"/>

注意 screenidx 是一个简单的列表,包含 0,1,2,3, ... 作为整数

public StreamedContent getScreen(Integer idx) {
    try {
        File file = screenFiles.get(idx);
        return new DefaultStreamedContent(new FileInputStream(file), null, "" + idx.intValue());
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

在这两个示例中,我在 getSceen 上都有一个断点,并且 idx 已正确发送到 getScreen,但结果不同。

我累了一个cache = false和一个timestamp参数,但没有结果。

4

0 回答 0