Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Onde criar a pasta para salvar a imagem do livro ?

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.

7 respostas

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

solução!

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.