1
resposta

Anotação @ManagedBean está deprecated

Fiquei com uma dúvida realizando o processo de binding com a classe LivroBean. A princípio escrevi a classe como:

@ManagedBean
public class LivroBean {

    public void gravar(){
        System.out.println("Gravando livro");
    }
}

E o recebia uma exceção dizendo não ser possível localizar a classe LivroBean

"Target Unreachable, identifier 'livroBean' resolved to null"

Pesquisando aqui no fórum encontrei esta thread https://cursos.alura.com.br/forum/topico-identifier-livrobean-resolved-to-null-27778

E vi que uma possível solução é adicionar um (name = "LivroBean") na anotação de @ManagedBean:

@ManagedBean(name = "LivroBean")
public class LivroBean {

    public void gravar(){
        System.out.println("Gravando livro");
    }
}

Dessa maneira funcionou, porém me surgiram algumas dúvidas.

Com base nisso gostaria de saber duas coisas: 1) Porque não funcionou sem o name na anotação @ManagedBean? 2) Que outra solução teria ao invés de utilizar o ManagedBean, ou afinal não é necessário se preocupar com isso? Obrigado a todos pela atenção, que a força esteja com vocês! <3

1 resposta

Rogerio,

O ManagedBean é uma camada do MVC ( Modeler, View e Controler) resumidamente.

E sim ele é necessário para fazer a comunicação das páginas jsf com as classes java.

Ou seja ela é a camada de modeler, aonde recebe as informações da pagina e disponibiliza para demais execuções dentro do codigo java.

E o parâmetro name somente é necessário quando esta é diferente da classe.