Support Managed-Bean


O Support Managed-Bean é um tipo de managed bean no JavaServer Faces (JSF) que desempenha um papel de suporte para uma ou mais views (páginas) na camada de View do padrão de design MVC (Model-View-Controller).

A principal função desse tipo de bean é fornecer dados reutilizáveis ou recursos compartilhados entre múltiplas páginas, geralmente usando listas, objetos de configuração, ou qualquer outro dado que precise ser acessado em várias partes da aplicação.

Características

Escopo Comum

Normalmente, o escopo do support bean é session (@SessionScoped) ou application (@ApplicationScoped).

  • Session scope: Quando os dados são específicos de um usuário (como preferências do usuário, itens do carrinho de compras, etc.).

  • Application scope: Quando os dados são comuns a todos os usuários (como uma lista de estados/províncias, opções de moeda, ou qualquer outra configuração global).

Função de Suporte

O support bean não processa lógica de negócios, mas sim fornece dados ou recursos que serão consumidos por outros beans ou componentes da interface.

Ele facilita a reutilização de dados em diferentes partes da aplicação, o que evita repetição e melhora a performance.

Caso de uso

Um caso comum de uso é fornecer uma lista de opções para elementos de interface como menus suspensos (h:selectOneMenu), onde essas listas podem ser compartilhadas entre várias páginas JSF.

Exemplo

Imagine que temos uma lista de províncias que será usada em várias páginas da aplicação.

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="Escolha a Província: " for="province" />
        <h:selectOneMenu id="province" value="#{supportBean.selectedProvince}">
            <f:selectItems value="#{supportBean.provinces}" />
        </h:selectOneMenu>
        
        <h:commandButton value="Salvar" action="#{controllerBean.save}" />
    </h:form>
</h:body>
</html>

Support Managed-Bean

import jakarta.faces.bean.ApplicationScoped;
import jakarta.faces.bean.ManagedBean;
import java.util.List;
import java.util.Arrays;
 
@ManagedBean
@ApplicationScoped  // Pode ser @SessionScoped se for específico do usuário
public class SupportBean {
    private List<String> provinces;
    private String selectedProvince;
 
    // Construtor inicializando a lista de províncias
    public SupportBean() {
        provinces = Arrays.asList("São Paulo", "Rio de Janeiro", "Minas Gerais", "Bahia", "Paraná");
    }
 
    // Getter e Setter para o campo provinces
    public List<String> getProvinces() {
        return provinces;
    }
 
    public void setProvinces(List<String> provinces) {
        this.provinces = provinces;
    }
 
    // Getter e Setter para o campo selectedProvince
    public String getSelectedProvince() {
        return selectedProvince;
    }
 
    public void setSelectedProvince(String selectedProvince) {
        this.selectedProvince = selectedProvince;
    }
}
  1. Definição das Províncias: O SupportBean é um managed bean com escopo de aplicação, o que significa que a lista de províncias será compartilhada entre todos os usuários da aplicação.
  2. Uso na Interface: Na página XHTML, o componente h:selectOneMenu usa o SupportBean para obter a lista de províncias e preenchê-la no menu suspenso com a tag f:selectItems.
  3. Armazenamento da Seleção: Quando o usuário escolhe uma província, o valor selecionado é armazenado no atributo selectedProvince do SupportBean.

Referências


https://stackoverflow.com/questions/746047/jsf-backing-bean-structure-best-practices