Boa tarde Sr(a)s !
Preciso exibir um campo foto em uma página de retorno.
O Bean esta assim :
public class GeocodigoFoto {
private byte[] foto;
public byte[] getFoto() {
return foto;
}
public void setFoto(byte[] foto) {
this.foto = foto;
}
}
public static GeocodigoFoto obterFotoLocal(String codlocal) throws SQLException
{ Conexao.setPOOL_NAME(Constantes.JNDI);
String sql = " SELECT FOTO FROM LOCALIDADE "+
" WHERE (COD_LOCAL = ?)";
GeocodigoFoto geocodigofoto = (GeocodigoFoto)SQLUtil.obtemObjeto(sql, GeocodigoFoto.class, new Object[] { codlocal});
return geocodigofoto;
}
Servelet para exibir a foto :
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try {
String strLocal = request.getParameter("codlocal");
GeocodigoFoto geocodigofoto = GeocodigosDao.obterFotoLocal(strLocal);
response.setContentType("image/jpeg");
response.addHeader("Content-Disposition","filename=localFoto.jpg");
byte[] fileBytes;
fileBytes = geocodigofoto.getFoto();
synchronized(response){
response.getOutputStream().write(fileBytes);
response.flushBuffer();
System.out.println(strLocal);
}
}
catch (Exception e)
{
String strPath = getServletContext().getRealPath("img");
File file = new File(strPath,"localsemfoto.jpg");
FileInputStream entrada = new FileInputStream (file);
ByteArrayOutputStream saida = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
while (entrada.read(buffer) != -1){
saida.write(buffer);
}
byte[] fileBytes;
fileBytes = saida.toByteArray();
synchronized(response){
response.getOutputStream().write(fileBytes);
response.flushBuffer();
}
System.out.println("sem foto");
}
}
Porém ocorre o seguinte erro :
Não foi possível selecionar os dados da Classe;
Alguém sabe o motivo ?