Mas uma dúvida, agora com upload de imagens, segue codigos abaixo
[code]package managedbeans;
/**
*
-
@author daniel
*/
import java.io.File;
import java.io.FileOutputStream;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;
import org.primefaces.event.FileUploadEvent;
public class UploadArquivo {
private String diretorio;
private String caminho;
private byte[] arquivo;
private String nome;
public UploadArquivo() {
}
public String getNome() {
return nome;
}
public String getRealPath() {
ExternalContext externalContext =
FacesContext.getCurrentInstance().getExternalContext();
HttpServletResponse response =
(HttpServletResponse) externalContext.getResponse();
FacesContext aFacesContext = FacesContext.getCurrentInstance();
ServletContext context =
(ServletContext) aFacesContext.getExternalContext().getContext();
return context.getRealPath("/");
}
public void fileUpload(FileUploadEvent event, String type, String diretorio) {
try {
this.nome = new java.util.Date().getTime() + type;
this.caminho = getRealPath() + diretorio + getNome();
this.arquivo = event.getFile().getContents();
File file = new File(getRealPath() + diretorio);
file.mkdirs();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void gravar() {
try {
FileOutputStream fos;
fos = new FileOutputStream(this.caminho);
fos.write(this.arquivo);
fos.close();
} catch (Exception ex) {
System.out.println(ex);
}
}
}[/code]
[code]package managedbeans;
import entities.Produto;
import java.io.IOException;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletRequest;
import org.primefaces.event.FileUploadEvent;
import repository.ProdutoRepository;
/**
*
-
@author daniel
*/
@ManagedBean(name = “mbProduto”)
@SessionScoped
public class ProdutoBean implements java.io.Serializable {private Produto produto = new Produto();
private List produtos;
private UploadArquivo arquivo = new UploadArquivo();public void uploadAction(FileUploadEvent event) {
this.arquivo.fileUpload(event, “.JPG”, “/foto/”);
this.produto.setFoto(this.arquivo.getNome());
}public void save() throws IOException {
ProdutoRepository produtoRepository = new ProdutoRepository(this.getManager());
produtoRepository.save(this.produto);
this.arquivo.gravar();this.produto = new Produto(); //this.produtos = null; this.arquivo = new UploadArquivo(); FacesContext.getCurrentInstance().getExternalContext().redirect("produto.xhtml");}
public String preparaAlterar(Produto produto) throws IOException {
this.setProduto(produto);
FacesContext.getCurrentInstance().getExternalContext().redirect(“alterar.xhtml”);
return “alterar.xhtml?faces-redirect=true”;
}public void update() throws IOException {
ProdutoRepository produtoRepository = new ProdutoRepository(this.getManager());
produtoRepository.update(this.produto);this.produto = new Produto(); this.produtos = null; FacesContext.getCurrentInstance().getExternalContext().redirect("listagem.xhtml");}
public void remove(Produto produto) {
ProdutoRepository repository = new ProdutoRepository(this.getManager());
repository.remove(produto);this.produtos = null;}
public List getTpListas() {
if (this.produtos == null) {
ProdutoRepository repository = new ProdutoRepository(this.getManager());
this.produtos = repository.getProduto();
}return this.produtos;}
public Produto getProduto() {
return produto;
}public void setProduto(Produto produto) {
this.produto = produto;
}private EntityManager getManager() {
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
HttpServletRequest request = (HttpServletRequest) ec.getRequest();
return (EntityManager) request.getAttribute(“entityManager”);
}
}[/code]
[code]
<f:view>
<h:head>
<title>Tipo de Lista</title>
<style type="text/css">
.ui-widget {font-size: 75% !important;}
</style>
</h:head>
<h:body>
<h:form id="frmGeral" enctype="multipart/form-data">
<p:fieldset legend="Cadastro de Produto" toggleable="true">
<p:messages id="messages" />
<h:panelGrid columns="2" style="font-family: Verdana, Arial; font-weight: bold;">
<h:outputLabel id="lbNome" value="*Nome" for="nome" style="float: right;"/>
<p:inputText id="nome" size="60" value="#{mbProduto.produto.nome}" required="true"
requiredMessage="Campo [Nome] é obrigatório." />
<h:outputLabel id="lbUndMed" value="*Unidade de Medida" for="undmed" style="float: right;"/>
<p:inputText id="undmed" size="60" value="#{mbProduto.produto.undmed}" required="true"
requiredMessage="Campo [Unidade de Medida] é obrigatório." />
<h:outputLabel id="lbFoto" value="Foto" for="foto" style="float: right;"/>
<p:fileUpload label="Procurar" id="foto" fileUploadListener="#{mbProduto.uploadAction}" auto="true"/>
<p:commandButton value="Adicionar" action="#{mbProduto.save()}"
update="frmGeral, messages" />
</h:panelGrid>
</p:fieldset>
</h:form>
</h:body>
</f:view>
[/code]
O problema, quando eu clico no botão pra adicionar as fotos, mesmo que coloque um breakpoint no public void uploadAction(FileUploadEvent event) { ele não faz nada, não para no break e nem faz o upload.
Sempre noto que a imagem aparece em um “flash” de segundos fazendo o upload e some.