我有一个带有文件上传的简单表单。文件上传和支持 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
参数,但没有结果。