Ich verwende JSF 2.2 mit PrimeFaces 5.3 unter dem Glassfish 4.1p: graphicImage und Fancybox Integration
Innerhalb der Anwendung ich den Ansatz verwenden, um die Bilder aus der Datenbank zu zeigen. Also das heißt ich habe keine URL. Es gibt Tonnen von Beispiel aus dieser Sicht, aber ich werde hier einfügen, um nützlicher zu sein.
Hier wird die facelets
<p:graphicImage value="#{applicationScopedBean.imagesFromDb}" class="img">
<f:param name="imageId" value="#{actualAd.favouriteImageId}" />
<f:param name="cvlTimeStamp" value="#{now}" />
</p:graphicImage>
Und hier das Backing 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()));
}
}
Hier ein Beispiel eines der erzeugte HTML-Code
<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">
von Entwurf, um das zu verwenden, Galerie, die von fancybox kommt, benötigen wir einen Code ähnlich dem folgenden
Aber ich benutze graphicImages mit Streams, ich habe nicht die Verbindung im Href-Wert benötigt. Gibt es eine Möglichkeit, die generierte Bild-URL abzurufen? Grundsätzlich muss ich die generierte Zeichenfolge abrufen, die zum Füllen des src-Attributs des img-Tags verwendet wird.
Ist es möglich, das Problem zu lösen? Vielen Dank!
Kannst du nicht ein kleines Javascript verwenden, um es vom 'img' -Tag abzurufen? Aber ich bezweifle, wenn Sie dann darauf klicken, das gleiche Bild kann wieder abgerufen werden ... Lesen Sie besser über 'p: graphicImage' auf Stackoverflow, im Vergleich zu' o: graphicImage'. Oder benutze einfach ein einfaches Servlet ... Könnte die beste Lösung sein – Kukeltje
Es ist eine Idee, aber ich habe nicht so viel Geschick mit Javascript. Haben Sie ein Beispiel oder eine Dokumentation, die ich verwenden kann? Vielen Dank! – Gavi