Hola a todos, mi problema es el siguiente:
Estoy haciendo una web con JSF en la cual muestro una serie de imágenes, las cuales muestro a través de un servlet, ya que las mismas las obtengo desde una instancia de una clase entidad.
Estas imágenes las muestro en la web dentro de un commandbutton, el cual al realizar clic ejecuta un método que se encuentra en un Bean, hasta ahi todo de 10, el problema es que cuando ejecuto el metodo y se recarga la pagina, el servlet que muestra la imagen no se vuelve a instanciar, por ende me muestra el texto alternativo a la imagen.
A continuación le muestro mi código:
primero el servlet:
public class ImageServlet extends HttpServlet {
private int heigth = 100;
private int width = 100;
private int serviceCounter = 0;
private long interval = 500;
protected void processRequest(HttpServletRequest req, HttpServletResponse res)
throws ServletException, java.io.IOException {
res.setContentType("image/jpeg");
ServletOutputStream bufferSalida = res.getOutputStream();
ImageIcon imagen = CatalogoArticulosBean.getInstancia().getImagenArti culo(Integer.valueOf(req.getParameter("idx")));
// Convierto Image a BufferedImage
BufferedImage bImg = new BufferedImage(width, heigth, BufferedImage.TYPE_INT_RGB);
Graphics2D bufImageGraphics = bImg.createGraphics();
bufImageGraphics.drawImage(imagen.getImage().getSc aledInstance(width, heigth, Image.SCALE_DEFAULT), 0, 0, null);
ChartUtilities.writeBufferedImageAsJPEG(bufferSali da, bImg);
bufferSalida.flush();
bufferSalida.close();
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
processRequest(request, response);
}
}
ahora el JSP (este archivo despues lo incluyo en otro JSP):
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<jsp:useBean id="catalogoArticulosBean" scope="session" class="catalogo.CatalogoArticulosBean" />
<f:subview id="catalogoCentro">
<h:form id="botoneraArt">
<table>
<tr>
<td align="center">
<h:commandButton id="flechaUp" image="imagenes/iconos_barra/up.png" title="Desplazamiento" immediate="true" action="#{catalogoArticulosBean.flechaArriba}"/>
</td>
</tr>
<tr>
<td align="center">
<h:commandButton id="imagen1" image="faces/imagen1?idx=1" title="#{catalogoArticulosBean.stock1}" immediate="true"/>
</td>
</tr>
<tr>
<td align="center">
<h:commandButton id="imagen2" image="faces/imagen2?idx=2" title="#{catalogoArticulosBean.stock2}" immediate="true"/>
</td>
</tr>
<tr>
<td align="center">
<h:commandButton id="imagen3" image="faces/imagen3?idx=3" title="#{catalogoArticulosBean.stock3}" immediate="true"/>
</td>
</tr>
<tr>
<td align="center">
<h:commandButton id="imagen4" image="faces/imagen4?idx=4" title="#{catalogoArticulosBean.stock4}" immediate="true"/>
</td>
</tr>
<tr>
<td align="center">
<h:commandButton id="flechaDown" image="imagenes/iconos_barra/down.png" title="Desplazamiento" immediate="true"/>
</td>
</tr>
</table>
</h:form>
</f:subview>
el problema es, como explique anteriormente, cuando ejecuto el action="#{catalogoArticulosBean.flechaArriba} del primer commandbutton (en el cual retorno un null para que recargue la pagina) me la carga nuevamente pero no me muestra las imagenes (no instancia el servlet de los demas commandbuttons)
Desde ya muchas gracias!
saludos