Olá, No curso de Java EE com CDI,JSF e JPA, o instrutor cria a pasta em um caminho do sistema. Não entendi onde tenho que criar essa pasta. Obs.: Uso Ubuntu. Se alguem puder ajudar, agradeço.
Olá, No curso de Java EE com CDI,JSF e JPA, o instrutor cria a pasta em um caminho do sistema. Não entendi onde tenho que criar essa pasta. Obs.: Uso Ubuntu. Se alguem puder ajudar, agradeço.
Oi Pedro,
Pode criar o diretório imagens
por dentro do Eclipse mesmo dentro de src/main/webapp/resources
.
Abraço!
Oi Joviane, Criei a pasta imagens dentro do caminho que vc falou e apresenta esse erro quando tento submeter.
Context Path:
/sistema-web
Servlet Path:
/admin/produto/form.xhtml
Path Info:
null
Query String:
null
Stack Trace
javax.servlet.ServletException: java.nio.file.NoSuchFileException: /imagens/superman.jpeg
javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
Pode me ajudar, pfvr ?
Oi Pedro,
Posta o códico da sua classe que faz o upload para eu dar uma olhada?
Obrigada!
Segue:
package br.edu.unicid.sistemaweb.beans;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.Part;
import javax.transaction.Transactional;
import br.edu.unicid.sistemaweb.dao.CategoriaDAO;
import br.edu.unicid.sistemaweb.dao.ProdutoDAO;
import br.edu.unicid.sistemaweb.model.Categoria;
import br.edu.unicid.sistemaweb.model.Produto;
@Named
@RequestScoped
public class AdminProdutoBean {
private Produto produto = new Produto();
@Inject
private ProdutoDAO dao;
@Inject
private CategoriaDAO categoriaDAO;
@Inject
private FacesContext context;
private List<Integer> categoriasId = new ArrayList<>();
private Part imgProduto;
@Transactional
public String salvar() throws IOException {
for (Integer categoriaId : categoriasId) {
produto.getCategorias().add(new Categoria(categoriaId));
}
dao.salvar(produto);
System.out.println("Produto " + produto + "salvo com sucesso");
imgProduto.write("/imagens/" + imgProduto.getSubmittedFileName());
context.getExternalContext().getFlash().setKeepMessages(true);
context.addMessage(null, new FacesMessage("Produto cadastrado com sucesso!"));
return "/admin/produto/lista?faces-redirect=true";
}
public List<Integer> getCategoriasId() {
return categoriasId;
}
public void setCategoriasId(List<Integer> categoriasId) {
this.categoriasId = categoriasId;
}
public List<Categoria> getCategorias() {
return categoriaDAO.listar();
}
public Produto getProduto() {
return produto;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
public Part getImgProduto() {
return imgProduto;
}
public void setImgProduto(Part imgProduto) {
this.imgProduto = imgProduto;
}
}
Caso precise de mais algum codigo só falar.
Obrigado
Oi Pedro,
O problema está na linha:
imgProduto.write("/imagens/" + imgProduto.getSubmittedFileName())
Como está com /imagens
, ele está usando como caminho absoluto a partir da raiz do servidor e não do seu projeto. Uma solução é você passar o caminho completo /sistema-web/imagens/
na hora de fazer a concatenação.
Teste com esta alteração e veja se funciona. Qualquer coisa só falar!
Abraço!
Fiz a alteração, Joviane. E apresentou esse erro agora:
Context Path:
/sistema-web
Servlet Path:
/admin/produto/form.xhtml
Path Info:
null
Query String:
null
Stack Trace
javax.servlet.ServletException: java.nio.file.NoSuchFileException: /sistema-web/imagens/superman.jpeg
javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)
Quando eu tiro a primeira barra e tento salvar o erro é esse:
javax.servlet.ServletException: java.nio.file.NoSuchFileException: /home/anony/wildfly-101/standalone/tmp/sistema-web.war/sistema-web/imagens/superman.jpeg
Olá Joviane, passando pra falar que consegui resolver o erro.
Criei a pasta onde ficam as imagem na raiz do meu usuário, no caso /home/anony/ e depois segui conforme as aulas do curso mesmo.
Agora tudo funcionando como deveria.
Obrigado pela ajuda.