I'm trying to display an image with, but it's not appearing in any browser.
On my page I'll call the image mode:
<p:graphicImage value="/upload/#{desap.foto}" height="140"
width="140" />
and when I compile and put in the preview element it appears as follows:
src="/ajudeaencontrar/upload/444?pfdrid_c=true"
... Editing
This is how my ManagedBean is.
@ManagedBean(name = "desapBean")
@SessionScoped
public class CadastroDesaparecidoBean {
private Desaparecido desaparecido;
private DescricaoDesaparecido descricao;
private List<Desaparecido> listaDesaparecido;
private String situacao = null;
// Pega o usuário logado
@ManagedProperty(value = "#{uBean.usuario}")
private Usuario responsavel;
private UploadArquivo arquivo = new UploadArquivo();
private boolean skip;
private boolean isdeficiencia = false;
private boolean booEditar = false;
@PostConstruct
public void inicializar() {
try {
limpar();
listaDesaparecido = new DesaparecidoJPA()
.buscarDesaparecidosPorIdResponsavel2(responsavel);
} catch (Exception e) {
System.out.println("Não foi possível resgatar os dados");
e.printStackTrace();
}
}
public void limpar() {
desaparecido = new Desaparecido();
descricao = new DescricaoDesaparecido();
arquivo = new UploadArquivo();
}
...
/*
* Metodo para realizar o upload de uma foto Os tipos de dados sao validados
* no Primefaces
*/
public void uploadAction(FileUploadEvent event) {
FacesContext fc = FacesContext.getCurrentInstance();
try {
this.arquivo.fileUpload(event, ".jpg");
this.desaparecido.setFoto(this.arquivo.getNome());
fc.addMessage("formcaddesap", new FacesMessage("", event.getFile()
.getFileName() + " foi carregada."));
} catch (Exception ex) {
fc.addMessage("formcaddesap", new FacesMessage("", event.getFile()
.getFileName() + " não foi carregada."));
}
}
public String cadastrar() {
FacesContext fc = FacesContext.getCurrentInstance();
try {
...
new DesaparecidoJPA().gravar(desaparecido);
this.arquivo.gravar();
FacesUtil.addSuccessMessage(desaparecido.getNome()
+ " cadastrado com sucesso.");
System.out.println("arquivo gravado: " + arquivo.getNome());
inicializar();
} catch (Exception e) {
e.printStackTrace();
FacesUtil.addSuccessMessage("Dados não foram armazenados!");
}
return "/admin/painelresp?faces-redirect=true";
}
}
This is the File Upload Class:
public class UploadArquivo {
private String caminho;
private byte[] arquivo;
private String nome;
public UploadArquivo() {
}
public String getNome() {
return nome;
}
public String getRealPath() {
FacesContext aFacesContext = FacesContext.getCurrentInstance();
ServletContext context = (ServletContext) aFacesContext
.getExternalContext().getContext();
//Caminho dentro do projeto no servidor - onde ficarao salvas.
return context.getRealPath("/WEB-INF/upload/");
}
public void fileUpload(FileUploadEvent event, String tipo) throws Exception {
this.nome = new java.util.Date().getTime() + "_"
+ event.getFile().getSize() + tipo;
this.arquivo = event.getFile().getContents();
this.caminho = getRealPath() + getNome();
File file = new File(getRealPath());
file.mkdirs();
System.out.println("caminho: " + caminho);
System.out.println("Nome: " + getNome());
}
public void gravar() {
try {
FileOutputStream fos;
fos = new FileOutputStream(this.caminho);
fos.write(this.arquivo);
fos.close();
} catch (Exception ex) {
System.out.println(ex);
}
}
}
This is the section of the Bean that loads the list to display in the Datagrid:
@ManagedBean(name = "api")
@SessionScoped
public class AplicacaoBean {
private Desaparecido desaparecido;
private DescricaoDesaparecido descricao;
private List<Desaparecido> lista;
private List<Desaparecido> resultados = new ArrayList<Desaparecido>();
@PostConstruct
public void inicializar() {
try {
desaparecido = new Desaparecido();
lista = new DesaparecidoJPA().listar();
} catch (Exception e) {
e.printStackTrace();
}
}
public List<Desaparecido> getLista() {
return lista;
}
//Getters and Setters...
The photo attribute of the Disappeared Entity is of type String.
The photo is being saved correctly on the server, I put it to print the path and it shows:
C:\workspace\Java EE SE\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\ajudeaencontrar\WEB-INF\upload
Does anyone have any idea how to solve this? I want to display the photo for the user. I already looked for it here in the site, but I did not find anything specific.