Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema ao gravar o arquivo

Eu estou usando um pc com windows e criei a pasta C:\casadocodigo\livros na maquina, mas ao salvar um livro o arquivo esta sendo colocado no caminho c:\casadocodigo e não na subpasta livros.

adminLivroBean

@Named
@RequestScoped
public class AdminLivrosBean {

    private Livro livro = new Livro();

    private List<Integer> autoresId = new ArrayList<>();

    private Part capaLivro;

    @Inject
    LivroDao livroDao;

    @Inject
    AutorDao autorDao;

    @Inject
    private FacesContext context;

    @Transactional
    public String salvar() throws IOException{
        for (Integer autorId : autoresId) {
            this.livro.getAutores().add(new Autor(autorId));
        }
        livroDao.salvar(this.livro);

        String path = "/casadocodigo/livros" + capaLivro.getSubmittedFileName();
        capaLivro.write(path);
        livro.setCapaPath(path);

        context.getExternalContext().getFlash().setKeepMessages(true);
        context.addMessage(null, new FacesMessage("Livro adicionado com sucesso! " + this.livro.getTitulo()));

        return "/livros/lista?faces-redirect=true";
    }

Livro

@Entity
public class Livro {

    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;

    @NotBlank
    private String titulo;

    @Lob
    @NotBlank
    @Length(min=20, max=300)
    private String descricao;

    @Min(50)
    private Integer numeroPaginas;

    @DecimalMin("20")
    private BigDecimal preco;    

    @ManyToMany
    @NotNull
    @Size(min=1)
    private List<Autor> autores = new ArrayList<>();

    @Temporal(TemporalType.DATE)
    private Calendar dataPublicacao = Calendar.getInstance();

    private String capaPath;
1 resposta
solução!

Oi

Creio que falta uma barra depois da palavra livro

Tenta assim

String path = "/casadocodigo/livros/" + capaLivro.getSubmittedFileName();

Do jeito que vc fez, ele está pensando que vc quer colocar a string livro e concatenar com o variável.