gpt4 book ai didi

jsf - 如何使用

? 绑定(bind)动态内容

转载 作者:行者123 更新时间:2023-12-02 07:04:31 25 4
gpt4 key购买 nike

我使用<p:media>显示静态 PDF 内容。

<p:media value="/resource/test.pdf" 
width="100%" height="300px" player="pdf">
</p:media>

如何更改它以显示动态内容?

最佳答案

就像 <p:graphicImage> 中那样,value属性可以指向返回 StreamedContent 的 bean 属性。这只需要一个特殊的 getter 方法,原因在下面关于使用 <p:graphicImage> 的答案中有详细解释。使用数据库中的动态资源:Display dynamic image from database with p:graphicImage and StreamedContent .

在您的特定示例中,它看起来像这样:

<p:media value="#{mediaManager.stream}" width="100%" height="300px" player="pdf">
<f:param name="id" value="#{bean.mediaId}" />
</p:media>

@ManagedBean
@ApplicationScoped
public class MediaManager {

@EJB
private MediaService service;

public StreamedContent getStream() throws IOException {
FacesContext context = FacesContext.getCurrentInstance();

if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
// So, we're rendering the HTML. Return a stub StreamedContent so that it will generate right URL.
return new DefaultStreamedContent();
} else {
// So, browser is requesting the media. Return a real StreamedContent with the media bytes.
String id = context.getExternalContext().getRequestParameterMap().get("id");
Media media = service.find(Long.valueOf(id));
return new DefaultStreamedContent(new ByteArrayInputStream(media.getBytes()));
}
}

}

关于jsf - 如何使用 <p :media>? 绑定(bind)动态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14232339/

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