ManagedBean

10 respostas
Y

Boa tarde!
Estou fazendo uns exercícios de java web por um livro.

Nesse livro pede para eu adicionar as anotações @ManageBean e @RequestScoped.

Mas quando coloco elas na minha classe da um Warning e as anotações ficam vermelhas. “The type ManagedBean is deprecated”

Alguém sabe me explicar o por que? e como resolver?

import javax.faces.application.FacesMessage;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.RequestScoped;

import javax.faces.context.FacesContext;
@ManagedBean(name=usuarioBean)

@RequestScoped

public class UsuarioBean {
private String nome;
private String email;
private String senha;
private String confirmaSenha;

10 Respostas

H

Aqui tem um topico semelhante. O que acontece é que com as atualizações do java, alguns objetos vão se tornando obsoletos, pois eles criam melhores, por isso da o Warning, mas não da erro, você consegue utilizar dessa maneira, mas é recomendado usar a nova, pois você já começa a aprender desatualizado.

Mike

O @ManagedBean foi descontinuado, o melhor é usar @Named do CDI.
Se você utiliza glassfish, o CDI ja vem junto, basta criar um arquivo chamado beans.xml no WEB-INF e colocar o seguinte código nele:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
      http://java.sun.com/xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>

Se o CDI tiver configurado corretamente, a sua classe ficaria assim:

@Named
@RequestScoped
public class UsuarioBean {

}

Obs: Ao usar o @Named(que é o @ManagedBean do CDI), você deve usar os escopos do CDI também.

Imports:

import javax.enterprise.context.RequestScoped;

import javax.inject.Named;
darlan_machado

Se ele usa glassfish ou qualquer outro application server que implemente a versão 7 da especificação JEE (ou superior).

Y

Bah que sacanagem, então não vale apena aprender uma coisa descontinuada!!!
Mas muda muita coisa de uma pra outra?

Mike

o @Named é mais poderoso, se você for fazer o básico o @ManagedBean ja da conta

O que foi descontinuado foi o @ManagedBean, não o JSF

Y

Mas por que a maioria dos cursos de java web com jsf ensina com @ManageBean?

Mike

Porque o @ManagedBean faz parte do JSF, além do que, quando surgiu o JSF não existia @Named
Quando o JSF surgiu, o mapeamento era feito através de xml, depois com a anotação @ManagedBean(versão 2.0) e hoje em dia é recomendado usar o @Named

Mike

Aqui tem um tópico bacaninha: https://cursos.alura.com.br/forum/topico--managedbean-x-named-15022

Para mais informações, pesquise sobre Named vs ManagedBean

Y

Agora acho que entendi.
Obrigado.

darlan_machado

Depende.
Tem muito código legado aí, cara.

Criado 18 de abril de 2018
Ultima resposta 18 de abr. de 2018
Respostas 10
Participantes 4