Olá desenvolvedores, tendo compreendido o ciclo de vida do JSF – JavaServer Faces, que contempla seis fases, é hora de entendermos um pouco mais acerca dos arquivos que compõem a estrutura do projeto de uma aplicação JSF.
O arquivo facesconfig.xml ou faces-config.xml é um desses arquivos, trata-se de um arquivo de configuração de um projeto JSF. Neste arquivo você pode configurar, rotinas avançadas, como Listeners. Este arquivo permite também que cuidemos da navegação entre páginas.
Em projetos simples, o faces-config.xml é opcional. No entanto, você pode, se quiser cria-lo. Mas seria neste caso, por uma questão de seguir o padrão de estrutura dos projetos do framework JSF. Sendo assim, não seria necessário colocar nenhuma configuração nele, somente as definições do XML.
Normalmente este arquivo, faces-config.xml, deverá estar na pasta lib da subpasta WEB-INF da pasta WebContent. Em uma estrutura bem específica.
WebContent/WEB-INF/lib/faces-config.xml
USANDO O FACESCONFIG.XML
E se você está se perguntando qual é a real utilidade deste arquivo, imagine o cenário das anotações do escopo do ManagedBean, @RequestScoped, @SessionScoped, @ApplicationScoped, @ViewScoped.
Estas anotações do escopo do ManagedBean definem um comportamento para as telas. Assim, poderíamos declarar as anotações, bem como trabalhar com os Managed Beas dentro do arquivo de configuração. Não é uma solução ótima, mas pode ser feito.
VERSÃO ANTERIORES DO JSF
Em versões anteriores do JSF, toda a declaração do ManagedBean era feita no arquivo de configuração. Assim, eram manualmente declarado o nome de referência, o pacote e o escopo.
Hoje, esta não é considerada uma boa solução, mas em tempos não tão distantes, era o que se fazia. Assim, pode acontecer de você ainda encontrar algum projeto que preserva essa forma de implementação. Aí caberá a você, programador, avaliar, a possibilidade e necessidade de atualizar os sistemas, bem como pesar todos os prós e os contras de fazê-lo.
EM POUCAS PALAVRAS
Nos tempos atuías o faceconfig.xml é usado apenas para a implementação de rotinas complexas. Dessa forma, para que você possa decidir entre utilizar ou descartar alguma coisa, é preciso antes conhecer, para que com propriedade você possa decidir.
E por fim, na versão 2.2.12 do JSF, a declaração do face-config.xml é obrigatório, independente da complexidade do sistema a ser desenvolvido. Sendo, neste caso, a declaração do arquivo apenas uma obrigatoriedade do framework.