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.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.