gpt4 book ai didi

primefaces - 带有 StreamedContent 的动态图像

转载 作者:行者123 更新时间:2023-12-03 16:45:59 25 4
gpt4 key购买 nike

我已经实现了两个 StreamedContent bean 来动态加载图形图像,按照找到的解决方案
here

1)第一个我在 contentFlow 中显示图像(一切正常)

<p:contentFlow value="#{imageBean.images}" var="image">
<p:graphicImage value="#{imageStreamer.fileContent}" styleClass="content" cache="false">
<f:param name="index" value="#{image.index}"/>
</p:graphicImage>
</p:contentFlow>

2)对于第二个,我尝试使用 foreach(或重复)显示图像:
 <c:forEach items="#{imageBean.images}" var="item" varStatus="varStatus">
<p:graphicImage value="#{imageStreamer.fileContent}" cache="false">
<f:param name="index" value="#{varStatus.index}" />
</p:graphicImage>
</c:forEach>

这不起作用。检查 ( context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE ) 始终为真。

如果我将 Bean 的范围更改为 RequestScoped比它有效!我很困惑……有人可以帮助我吗?

托管 bean :
@ManagedBean
@ApplicationScoped
public class ImageStreamer{

public ImageStreamer(){}

public StreamedContent getFileContent(){
List<Link> links = this.getLinkItems();
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();

FacesContext fc = FacesContext.getCurrentInstance();
String linkIndex = externalContext.getRequestParameterMap().get("index");

if(fc.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE){
return new DefaultStreamedContent();
}else{

int parsedIndex = Integer.parseInt(linkIndex);
Link ql = links.get(parsedIndex);
return new DefaultStreamedContent(new ByteArrayInputStream(ql.getBytes()), "image/png");
}
}
}

最佳答案

由于您使用的是素面,请尝试使用 p:repeat

Repeat is an extension to standard repeat component to provide interoperability between JSF implementations and PrimeFaces components.



https://www.primefaces.org/showcase/ui/data/repeat.xhtml

关于primefaces - 带有 StreamedContent 的动态图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43092094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com