Utility Managed-Bean


O Utility Managed-Bean é um tipo de managed bean no contexto do JSF (JavaServer Faces) que serve para fornecer funções utilitárias ou recursos genéricos que podem ser usados em várias partes da aplicação ou até mesmo em diferentes aplicações web.

Esses beans normalmente têm escopo de aplicação (@Scope("singleton")), pois suas funcionalidades são independentes de um usuário específico e podem ser reutilizadas de forma compartilhada por toda a aplicação.

Características Principais

Escopo Comum

Geralmente é configurado com o escopo application, permitindo que suas funcionalidades sejam compartilhadas por todas as requisições e usuários.

Função Utilitária

O utility bean encapsula funções genéricas que podem ser aplicadas em diferentes contextos, como manipulação de arquivos, conversão de dados, cálculos reutilizáveis, entre outros.

Reutilização

Ele pode ser usado em várias views ou até em diferentes aplicações, permitindo a reutilização de código.

Caso de uso

Um caso comum é um bean que gerencia o upload de arquivos ou que fornece operações genéricas de validação e formatação.

Exemplo

Imagine que precisamos implementar um recurso para upload de arquivos, e queremos centralizar essa funcionalidade em um utility bean, permitindo que seja usado em qualquer parte 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 enctype="multipart/form-data">
        <p:fileUpload fileUploadListener="#{utilityBean.handleFileUpload}" mode="advanced" auto="true" />
        <p:messages id="messages" autoUpdate="true" />
    </h:form>
</h:body>
</html>

import jakarta.faces.bean.ApplicationScoped;
import jakarta.faces.bean.ManagedBean;
import org.primefaces.model.file.UploadedFile;
import org.primefaces.model.file.UploadedFiles;
 
@ManagedBean
@ApplicationScoped
public class UtilityBean {
 
    // Método que lida com o upload de arquivos
    public void handleFileUpload(org.primefaces.event.FileUploadEvent event) {
        UploadedFile file = event.getFile(); // Obtém o arquivo enviado
 
        // Lógica de processamento do arquivo
        if (file != null) {
            System.out.println("Arquivo recebido: " + file.getFileName());
            System.out.println("Tamanho do arquivo: " + file.getSize() + " bytes");
        } else {
            System.out.println("Nenhum arquivo recebido.");
        }
    }
}
  1. Função Utilitária:

    • O método handleFileUpload encapsula a lógica necessária para processar arquivos enviados por meio do componente p:fileUpload do PrimeFaces.
    • Ele recebe o evento de upload, processa o arquivo e pode salvá-lo no servidor, validar seu conteúdo ou executar qualquer outra lógica.
  2. Integração na View:

    • O p:fileUpload na página XHTML referencia o método utilitário do UtilityBean para processar o arquivo.
    • Qualquer página da aplicação pode reutilizar essa funcionalidade, bastando incluir o componente p:fileUpload e referenciar o bean.
  3. Reutilização e Escopo:

    • O UtilityBean tem escopo application, garantindo que a mesma instância seja usada por todas as páginas da aplicação, otimizando recursos e promovendo consistência.

Referências


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