Backing Managed-Bean
Um Backing Managed-Bean é um tipo de managed bean usado no JavaServer Faces (JSF) que desempenha um papel crucial na camada de View (apresentação) do padrão de design MVC (Model-View-Controller).
Sua principal função é suportar a lógica da interface do usuário (UI), atuando como uma ponte entre a página JSF (XHTML) e a aplicação.
Características
Escopo Comum
Geralmente utiliza o escopo de requisição (@RequestScoped
), mas pode usar escopos como view ou session, dependendo da necessidade do estado.
Relacionamento 1:1 com a View
Cada backing-bean está associado a uma página JSF ou formulário em uma composição Facelet.
Propriedades Estilo JavaBean
Possui atributos com métodos get
e set
, que são propriedades da View, não do modelo de dados da aplicação.
Funções Auxiliares
Inclui métodos para manipular eventos JSF, como:
actionListener
: Manipula ações como cliques de botão.valueChangeListener
: Manipula mudanças de valores em componentes da interface.
Casos de uso
Responsabilidade: Focar no comportamento da interface de usuário (UI), como capturar valores de entrada, interagir com componentes JSF (botões, tabelas) e delegar chamadas para a lógica de negócios (normalmente em uma camada de serviço).
Boa Prática: Deve evitar conter lógica de negócio ou lógica complexa, limitando-se ao suporte direto da interação do usuário.
Exemplo
Página XHTML (View)
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:body>
<h:form>
<h:outputLabel value="Nome: " for="name" />
<p:inputText id="name" value="#{backingBean.name}" />
<h:outputLabel value="Idade: " for="age" />
<p:inputText id="age" value="#{backingBean.age}" />
<p:commandButton value="Salvar" action="#{backingBean.save}" update="result" />
<h:outputText id="result" value="#{backingBean.message}" style="margin-top:10px;display:block;" />
</h:form>
</h:body>
</html>
Backing Managed-Bean
import jakarta.faces.bean.ManagedBean;
import jakarta.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class BackingBean {
private String name;
private int age;
private String message;
// Getters e Setters para as propriedades da View
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
// Método de ação chamado pelo botão
public void save() {
// Lógica simples focada na interface (View)
this.message = "Dados salvos: Nome = " + name + ", Idade = " + age;
}
}
-
Entrada de Dados:
- O usuário preenche os campos
Nome
eIdade
na interface. - O JSF utiliza a EL (Expression Language) para associar os valores aos atributos do
BackingBean
.
- O usuário preenche os campos
-
Ação de Salvar:
- O botão Salvar chama o método
save()
do backing-bean. - A lógica no método atualiza a mensagem que será exibida na tela.
- O botão Salvar chama o método
-
Resposta na Tela:
- A mensagem de confirmação é exibida dinamicamente usando
h:outputText
, que é atualizado com a ação do botão.
- A mensagem de confirmação é exibida dinamicamente usando
Referências
https://stackoverflow.com/questions/746047/jsf-backing-bean-structure-best-practices