2
respostas

Erro no Servidor depois que passei tudo para CDI

GRAVE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/livraria]]
    at java.util.concurrent.FutureTask.report(Unknown Source)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/livraria]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
    ... 6 more
Caused by: org.jboss.weld.exceptions.DefinitionException: WELD-000075: Normal scoped managed bean implementation class has a public field:  [EnhancedAnnotatedFieldImpl] public br.com.caelum.livraria.bean.LivroBean.generos
2 respostas

Posta sua classe livroBean pra gente ver

package br.com.caelum.livraria.bean;

import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
import javax.faces.view.ViewScoped;
import javax.inject.Named;

import br.com.caelum.livraria.dao.DAO;
import br.com.caelum.livraria.modelo.Autor;
import br.com.caelum.livraria.modelo.Livro;

@Named
@ViewScoped
public class LivroBean implements Serializable {
    private static final long serialVersionUID = 1L;

    private Livro livro = new Livro();
    private Integer autorId;
    private Integer livroId;


    public void setGeneros(List<String> generos) {
        this.generos = generos;
    }

    public Integer getLivroId() {
        return livroId;
    }

    public void setLivroId(Integer livroId) {
        this.livroId = livroId;
    }

    public Integer getAutorId() {
        return autorId;
    }

    public void setAutorId(Integer autorId) {
        this.autorId = autorId;
    }

    public void setLivro(Livro livro) {
        this.livro = livro;
    }

    public Livro getLivro() {
        return livro;
    }

    public List<Livro> getLivros() {
        return new DAO<Livro>(Livro.class).listaTodos();
    }



    public String formAutor() {
        System.out.println("Chamando o autor");
        return "autor?faces-redirect=true";
    }

    public void gravar() {
        System.out.println("Gravando livro " + this.livro.getTitulo());

        if (livro.getAutores().isEmpty()) {
            FacesContext.getCurrentInstance().addMessage("autor", new FacesMessage("Não pode cadastrar sem um autor"));
            return;

        }

        if (this.livro.getId() == null) {
            new DAO<Livro>(Livro.class).adiciona(this.livro);

        } else {
            new DAO<Livro>(Livro.class).atualiza(this.livro);
        }

        this.livro = new Livro();

    }

    public List<Autor> getAutores() {
        return new DAO<Autor>(Autor.class).listaTodos();
    }

    public List<Autor> getAutoresDoLivro() {
        return this.livro.getAutores();
    }

    public void gravarAutor() {
        System.out.println("Gravando o autor" + this.autorId);

        Autor autor = new DAO<Autor>(Autor.class).buscaPorId(this.autorId);
        this.livro.adicionaAutor(autor);
        System.out.println("Adiciona o autor " + autor.getNome());

    }

    public void alterar(Livro livro) {
         this.livro = livro;
    }

    public void remover(Livro livro) {
        System.out.println("Removendo o livro");
        new DAO<Livro>(Livro.class).remove(livro);

    }

    public List<String> generos = Arrays.asList("Romance", "Drama", "Suspense", "Terror", "Epico", "Informática", "Ciência", "Filosofia");

    public List<String> getGeneros() {
        return generos;
    }

    public void removerAutor(Autor autor) {
        this.livro.removeAutorSelecionado(autor);
    }

    public void comecaComDigitoUm(FacesContext fc, UIComponent component, Object value) throws ValidatorException {
        String valor = value.toString();
        if (!valor.startsWith("1")) {
            throw new ValidatorException(new FacesMessage("ISBN deve começar com 1"));
        }

    }

    public void carregarLivroPelaId() {
        this.livro = new DAO<Livro>(Livro.class).buscaPorId(this.livro.getId());
    }

    public boolean precoEhMenor(Object valorColuna, Object filtroDigitado, Locale locale) {

        // Tirando espaçõs do filtro

        String textoDigitado = (filtroDigitado == null) ? null : filtroDigitado.toString().trim();

        // filtro é nulo ou vazio
        if (textoDigitado == null || textoDigitado.equals("")) {
            return true;
        }

        // elemento da tabela é nulo
        if (valorColuna == null) {
            return false;
        }

        try {

            // fazendo o parsing do filtro para converter para double
            Double precoDigitado = Double.valueOf(textoDigitado);
            Double precoColuna = (Double) valorColuna;

            // comparando os valores compareTo devolve um valor negativo se o
            // value é menor que o filtro
            return precoColuna.compareTo(precoDigitado) < 0;

        } catch (NumberFormatException e) {

            // usuario não digitou um numero
            return false;
        }

    }

}