[quote=ldanielts]Cara,
Está com a cara de um problema que eu já tive.
Mas, pra saber se é mesmo, gostaria que você mandasse o stack trace inteiro.
Veja se na trace tem alguma ArrayIndexOutOfBounds.
Um abraço.[/quote]
como pego o stacktrace completo? esse ai eh o que eh retornado na pagina, quando o erro acontece.
vou colocar aqui as classes queestou usando para vcs verem, mas acho que o faces-config.xml e o resto tá tudo okei.
Imagens.java (classe que contem o array de byte e o integer id)
[code]package dominio;
public class Imagens {
private byte[] documento;
private Integer id;
public byte[] getDocumento() {
return documento;
}
public void setDocumento(byte[] documento) {
this.documento = documento;
}
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
}[/code]
TesteUploadBean.java (managed bean)
[code]package logica;
import java.io.IOException;
import org.apache.myfaces.custom.fileupload.UploadedFile;
import dominio.Imagens;
import persistencia.ImagensDAO;
import persistencia.ImagensDAOImpl;
public class TesteUpload {
private UploadedFile arquivo;
public UploadedFile getArquivo() {
return arquivo;
}
public void setArquivo(UploadedFile arquivo) {
this.arquivo = arquivo;
}
public String acao() {
try {
Imagens imgAux = new Imagens();
imgAux.setDocumento(arquivo.getBytes());
ImagensDAO imgAux2 = new ImagensDAOImpl();
imgAux2.insert(imgAux);
} catch (IOException e) {
System.out.println("Erro!");
}
return "rsUpload";
}
public String volta() {
return "upload";
}
}[/code]
ImagensDAOImpl.java (classe gerada automaticamente, faz as funções de insert, delete, etc)
[code]/* Auto generated file */
package persistencia;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Session;
import java.util.List;
import org.hibernate.Criteria;
import dominio.Imagens;
import java.util.Iterator;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.Order;
import org.hibernate.LockMode;
import util.HibernateUtil;
public class ImagensDAOImpl implements ImagensDAO {
static private final Log log = LogFactory.getLog(ImagensDAOImpl.class);
public Session getSession() {
return HibernateUtil.currentSession();
}
/** auto generated
* @es_generated
*/
public List getAll() {
List values = null;
Session session = getSession();
Criteria allValues = session.createCriteria(Imagens.class);
values = allValues.list();
return values;
}
/** auto generated
* @es_generated
*/
public Iterator iterateAll() {
return getAll().iterator();
}
/** auto generated
* @es_generated
*/
public Imagens getById(Integer id) {
Imagens value = null;
Session session = getSession();
value = (Imagens) session.load(Imagens.class, id);
return value;
}
/** auto generated
* @es_generated
*/
public List findByCriteria(SearchCriteria criteria) {
List values = null;
Session session = getSession();
Criteria crit = getHBCriteria(session, criteria);
if (criteria.startFrom < criteria.maxResults && criteria.startFrom > -1) {
crit.setFirstResult(criteria.startFrom);
crit.setMaxResults(criteria.maxResults - criteria.startFrom);
}
values = crit.list();
return values;
}
/** auto generated
* @es_generated
*/
private Criteria getHBCriteria(Session session, SearchCriteria criteria) {
Criteria newCriteria = session.createCriteria(Imagens.class);
if (criteria.getId() != null) {
newCriteria.add(Restrictions.eq("id", criteria.getId()));
}
if ((criteria.ascending != null) && (criteria.ascending.contains("id")))
newCriteria.addOrder(Order.asc("id"));
else if ((criteria.descending != null)
&& (criteria.descending.contains("id")))
newCriteria.addOrder(Order.desc("id"));
if (criteria.getDocumento() != null) {
newCriteria.add(Restrictions.eq("documento", criteria
.getDocumento()));
}
if ((criteria.ascending != null)
&& (criteria.ascending.contains("documento")))
newCriteria.addOrder(Order.asc("documento"));
else if ((criteria.descending != null)
&& (criteria.descending.contains("documento")))
newCriteria.addOrder(Order.desc("documento"));
return newCriteria;
}
/** auto generated
* @es_generated
*/
public void insert(Imagens value) {
Session session = getSession();
session.save(value);
if (log.isDebugEnabled())
log.debug("inserting document: " + value);
}
/** auto generated
* @es_generated
*/
public void update(Imagens value) {
Session session = getSession();
session.update(value);
if (log.isDebugEnabled())
log.debug("updating document: " + value);
}
/** auto generated
* @es_generated
*/
public Imagens merge(Imagens value) {
Imagens newValue = null;
Session session = getSession();
newValue = (Imagens) session.merge(value);
if (log.isDebugEnabled())
log.debug("merging document: " + value);
return newValue;
}
/** auto generated
* @es_generated
*/
public void delete(Imagens value) {
Session session = getSession();
session.refresh(value, LockMode.UPGRADE);
session.delete(value);
if (log.isDebugEnabled())
log.debug("deleting document: " + value);
}
/** auto generated
* @es_generated
*/
public void delete(Integer id) {
Imagens value = getById(id);
Session session = getSession();
if (value != null) {
session.refresh(value, LockMode.UPGRADE);
session.delete(value);
if (log.isDebugEnabled())
log.debug("deleting document: " + value + " by ID:" + id);
}
}
}[/code]
upload.jsp (inteface que realiza o upload)
[code]<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h” %>
<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f” %>
<%@ taglib uri=“http://myfaces.apache.org/tomahawk” prefix=“t”%>
<html>
<head>
<title></title>
</head>
<body>
<f:view>
<h:form enctype=“multipart/form-data”>
<h:outputLabel value=“Arquivo:” for=“arquivo” />
<t:inputFileUpload id=“arquivo”
value="#{testeUpload.arquivo}"
storage=“file”
required=“true”/>
<h:commandButton action="#{testeUpload.acao}" value=“Enviar” />
</h:form>
</f:view>
</body>
</html> [/code]
para finalizar faces-config.xml (parte relevante)
<navigation-rule>
<from-view-id>/testes/upload.jsp</from-view-id>
<navigation-case>
<from-outcome>rsUpload</from-outcome>
<to-view-id>/testes/rsUpload.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>