0
私は、データベースからの画像を表示するためのアプローチを使用してアプリケーション内のGlassFish 4.1
下
私はPrimeFaces 5.3とJSF 2.2を使用しています。 これは私にURLがないことを意味します。 この点ではたくさんの例がありますが、私はもっと便利になるようにここに貼り付けていきます。ここで
使用するために、ここでのFacelets
<p:graphicImage value="#{applicationScopedBean.imagesFromDb}" class="img">
<f:param name="imageId" value="#{actualAd.favouriteImageId}" />
<f:param name="cvlTimeStamp" value="#{now}" />
</p:graphicImage>
そして、ここでバッキングBean
public StreamedContent getImagesFromDb() {
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 image. Return a real StreamedContent with the image bytes.
String imageId = context.getExternalContext().getRequestParameterMap().get("imageId");
return new DefaultStreamedContent(new ByteArrayInputStream(imageManager.getById(Long.valueOf(imageId)).getContent()));
}
}
生成されたHTMLコード設計によって
<img src="/myWebApp/faces/javax.faces.resource/dynamiccontent.properties?ln=primefaces&v=5.3&pfdrid=GgwXKejrBbRvnC%2Fxp98FzlaymhDf7Gb%2BEVoD%2BlqKVRmYUBBZeMmjKw%3D%3D&pfdrt=sc&imageId=23&myTimeStamp=Sun+May+15+19%3A19%3A08+CEST+2016&pfdrid_c=true">
の例、 fancyboxから来るギャラリーには、次のようなコードが必要です
ただし、ストリームと一緒にgraphicsImagesを使用すると、href値に必要なリンクがありません。 生成された画像のURLを取得できますか? 基本的には、imgタグのsrc属性を埋め込むために生成された文字列を取得する必要があります。
問題を解決することは可能ですか? ありがとうございました!
「img」タグから小さなJavaScriptを取得することはできませんか?しかし、あなたがそれをクリックすると、同じ画像を再び取り出すことができないでしょう... 'o:graphicImage'と比較して、stackoverflowの' p:graphicImage'についてよく読んでください。または、単純なサーブレットを使用してください...最高の解決策になるかもしれません – Kukeltje
それはアイデアですが、私はJavascriptでそんなにスキルがありません。いくつかの例や、私が使用できるいくつかの文書がありますか?ありがとうございました! – Gavi