JSF : diferença entre Backing Beans e Managed Beans

10 respostas
M

Pessoal,

Estou inciando meus estudos em JSF e estou com a seguinte dúvida :

Qual a difereça entre BACKING BEANS e MANAGED BEANS ?

Agradece,

Max Carvalho

10 Respostas

M

Normalmente no backing bean tem apenas os atributos da tela e o managed bean os métodos que as actions irá disparar.

abraços.

T

Tambem fiquei com essa dúvida no começo e encontrei as seguintes referências:
http://forums.sun.com/thread.jspa?threadID=5369007
http://www.guj.com.br/posts/list/121363.java#657725

O primeiro link responde sua pergunta, o seguinte é um bônus ^^
Boa leitura.

T

mabiel:
Normalmente no backing bean tem apenas os atributos da tela e o managed bean os métodos que as actions irá disparar.

abraços.


Não foi isso que eu entendi.
Na minha concepção ManagedBeans, como o nome diz, são beans gerenciados pelo JSF, aqueles que voce cadastra no FacesConfig.xml.
Já os BackingBeans são quase a mesma coisa, mas não são gerenciados pelo JSF, ou seja, você cuida da instância desses caras e tudo mais.
O que concluo com a sua resposta é que podemos “linkar” na view os métodos do ManagedBean as ações e esse contém BackingBeans com a responsabilidade de guardar os os atributos (devidamente “linkados”) da view.

Ainda recomendo a leitura dos links que postei.

M

Tchello:
mabiel:
Normalmente no backing bean tem apenas os atributos da tela e o managed bean os métodos que as actions irá disparar.

abraços.


(…) O que concluo com a sua resposta é que podemos “linkar” na view os métodos do ManagedBean as ações e esse contém BackingBeans com a responsabilidade de guardar os os atributos (devidamente “linkados”) da view.
(…)

Não entendi o que você quis dizer.

T

mabiel:
Tchello:
mabiel:
Normalmente no backing bean tem apenas os atributos da tela e o managed bean os métodos que as actions irá disparar.

abraços.


(…) O que concluo com a sua resposta é que podemos “linkar” na view os métodos do ManagedBean as ações e esse contém BackingBeans com a responsabilidade de guardar os os atributos (devidamente “linkados”) da view.
(…)

Não entendi o que você quis dizer.


Deixe-me explicar novamente.
Você tem um ou mais ManagedBean pra cada view registrados no facesconfig.xml.
Esses ManagedBeans tem as ações que essa view deve executar, correto? Algo como:

<a4j:support event="onclick" action="#{MeuManagedBean.executarAlgo}"/>

Os valores que quero mandar para esses ManagedBeans (inputTexts, SelectOneMenu, etc etc) estão representados nos ManagedBeans por BackingBeans (como atributos do ManagedBean, por exemplo) ficando algo do tipo(esse backingbean pode mesmo ser uma string):

<h:inputText value="#{MeuManagedBean.backingBean.descricaoProduto}" />

Seguindo o exemplo quando eu executar o método “executarAlgo” ele pode acessar o atributo backingBean e usar a String “descricaoProduto”, que é o conteúdo do inputText.
Por ai vai.

Consegui ser claro?
Qualquer dúvida manda brasa e pergunta!

Abraços.

M

Tchello:
mabiel:
Tchello:
mabiel:
Normalmente no backing bean tem apenas os atributos da tela e o managed bean os métodos que as actions irá disparar.

abraços.


(…) O que concluo com a sua resposta é que podemos “linkar” na view os métodos do ManagedBean as ações e esse contém BackingBeans com a responsabilidade de guardar os os atributos (devidamente “linkados”) da view.
(…)

Não entendi o que você quis dizer.


Deixe-me explicar novamente.
Você tem um ou mais ManagedBean pra cada view registrados no facesconfig.xml.
Esses ManagedBeans tem as ações que essa view deve executar, correto? Algo como:

<a4j:support event="onclick" action="#{MeuManagedBean.executarAlgo}"/>

Os valores que quero mandar para esses ManagedBeans (inputTexts, SelectOneMenu, etc etc) estão representados nos ManagedBeans por BackingBeans (como atributos do ManagedBean, por exemplo) ficando algo do tipo(esse backingbean pode mesmo ser uma string):

<h:inputText value="#{MeuManagedBean.backingBean.descricaoProduto}" />

Seguindo o exemplo quando eu executar o método “executarAlgo” ele pode acessar o atributo backingBean e usar a String “descricaoProduto”, que é o conteúdo do inputText.
Por ai vai.

Consegui ser claro?
Qualquer dúvida manda brasa e pergunta!

Abraços.

Entendi, foi claro sim. Foi isso que eu quis dizer na primeira mensagem rsrs.

Abraços.

T

IMHO, resumindo:
ManagedBeans são aqueles administrados pelo JSF e BackingBeans são todo o resto.

G

Tchello:
IMHO, resumindo:
ManagedBeans são aqueles administrados pelo JSF e BackingBeans são todo o resto.

Eu tenho um conceito diferente:

  • Managed-bean é todo objeto gerenciado pelo Faces.

  • Backing-bean é o managed-bean que tem uma relação mais íntima com alguma página. É o “código por trás da view”, ou seja, conhece seus componentes, trata seus eventos e pode manipula-la quando necessário.

Um managed-bean que não é backing-bean geralmente é um objeto de negócio ou de transporte de dados.

T

gomesrod:
Tchello:
IMHO, resumindo:
ManagedBeans são aqueles administrados pelo JSF e BackingBeans são todo o resto.

Eu tenho um conceito diferente:

  • Managed-bean é todo objeto gerenciado pelo Faces.

Exatamente como penso!

Naquele primeiro link que postei diz que ambos são a mesma coisa.
Gosto mais daquela visão que explicitei aqui e também gostei muito dessa parte que você disse:

T
Segundo o livro /ref=sr_1_1?ie=UTF8&s=books&qid=[telefone removido]&sr=8-1]Core JSF, um backing bean é um managed bean que possui atributos cujo tipo corresponde a um componente JSF. Exemplo de um managed bean comum:
public class UsuarioBean {
    // O usuário digita o nome na caixa de texto que existe na página.
    private String nome;

    // Getters e setters.
}
Exemplo de um backing bean:
public class UsuarioBean {
    private HtmlInputText nome;

    // Getters e setters.
}
Criado 26 de agosto de 2009
Ultima resposta 27 de ago. de 2009
Respostas 10
Participantes 5