Aficher une image stockée dans la base
Bonjour,
Je cherche à afficher dans une image dans une page JSF
J'ai déja :
L'upload de l'image dans la base.
Recharger l'image dans le bean.
Le rechargement de l'image dans une nouvelle fenetre en créant un lien sur le lien :<h:commandLink action="#{fileBean.getFile}">
getFile ayant le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11
| public String getFile() throws SQLException, JRException, IOException {
file = FileService.findById(id);
byte[] bytes = file.getData();
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
response.setContentLength(bytes.length);
response.setContentType(file.getMime());
response.getOutputStream().write(bytes);
context.responseComplete();
return null;
} |
Une nouvelle fenetre s'ouvre et affiche l'image.
Je souhaite faire : <h:graphicImage url="#{fileBean.file}" styleClass="pic" title="Creer" />
mais cela ne marche pas j'ai l'erreur (presque logique):
Servlet response already use Writer, OutputStream not possible
Et oui la je n'ouvre pas une nouvelle réponse !!
Merci de m'indiquer la route à suivre.
ps : j'ai aussi essayé de retourner le byte[] sans succès.