N
Nabble
Gast
Ich habe ein Problem. Verwende die JBoss RichFaces, Spring und Hibernate und das meiste klappt ganz gut, bis auf das ANzeigen von Bildern einer jsp Seite. Vorher hatte ich die Tomahawk Komponenten benutzt, und da ging meine bisherige Lösung. Mit den RichFaces erhalte ich allerdings folgendes Problem wenn eine jsp Seite aufrufe, die images in der Form
Auszug data.jsp
enthält.
viewimage.jsp
Auszug PictureBeanLogic
Fehler:
Nun möchte ich ein eigenes Servlet schreiben, welches die Bilder ähnlich wie in viewPicture handelt. Aber:
Wie kann ich nun den Bezug zu einem Springservice herstellen, der die DB Anfragen übernimmt.
Zum Beispiel brauche ich darin soetwas wie ImageService.getPicture(...).
Hope anybody can help!
Auszug data.jsp
Code:
<t:graphicImage url="viewimage.jsp?index=0&size=thumbnail"/>
enthält.
viewimage.jsp
Code:
<%@page contentType="image/jpg"%>
<%@page import="de....PictureBean,
javax.faces.context.FacesContext
"%>
<%
FacesContext fc = FacesContext.getCurrentInstance();
PictureBeanLogic bean = (PictureBean) fc.getApplication().createValueBinding("#{PictureBean}").getValue(fc);
bean.viewPicture("index", "size");
%>
Auszug PictureBeanLogic
Code:
public final void viewPicture (String attributeIndex, String attributeSize) {
...
byte[] data = getPictureData(index, size);
FacesContext faces = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) faces.getExternalContext().getResponse();
response.setContentType("image/jpg");
try {
response.getOutputStream().write(data);
} catch (IOException e) {
e.printStackTrace();
}
faces.responseComplete();
}
Fehler:
Code:
java.lang.IllegalStateException: Servlet response already use stream, Writer not possible
at org.ajax4jsf.webapp.FilterServletResponseWrapper.getWriter(FilterServletResponseWrapper.java:226)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
...
Nun möchte ich ein eigenes Servlet schreiben, welches die Bilder ähnlich wie in viewPicture handelt. Aber:
Wie kann ich nun den Bezug zu einem Springservice herstellen, der die DB Anfragen übernimmt.
Zum Beispiel brauche ich darin soetwas wie ImageService.getPicture(...).
Code:
public class ImageServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
Integer index = Integer.parseInt(request.getParameter("index"));
String size = request.getParameter("size");
//irgendwie die Daten über einen SpringService bekommen ??
byte[] data = getPictureData(index, size);
FacesContext faces = FacesContext.getCurrentInstance();
response.setContentType(CONTENT_TYPE);
r
try {
response.getOutputStream().write(data);
faces.responseComplete();
} catch (Exception e) {
//
}
}
Hope anybody can help!