Após o grande suporte do JSF 2 para anotações, estou me perguntando o que eu usaria faces-config.xml
para. Qual é a sua importância agora?
Ou seja, quais são as configurações que só podem ser feitas por faces-config.xml
meio de anotações e não por anotações?
No momento, tudo o que estou usando é para declarar o resolvedor EL do Spring.
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<application>
<el-resolver>
org.springframework.web.jsf.el.SpringBeanFacesELResolver
</el-resolver>
</application>
</faces-config>
jsf
jsf-2
faces-config
Mahmoud Saleh
fonte
fonte
<el-resolver>
no meufaces-config.xml
e está funcionando perfeitamente.Respostas:
Ainda deve ser usado para muitas coisas que não podem ser anotadas. Por exemplo, mensagens de validação JSF personalizadas:
Um pacote i18n global (para que você não precise declarar
<f:loadBundle>
em todas as visualizações):Localidades i18n explicitamente suportadas (para que as não declaradas sejam ignoradas mesmo que haja um pacote de mensagens ou de recursos para elas):
Manipuladores de visualização personalizados :
Ouvintes de fase (ainda não há anotação para isso):
Beans gerenciados que não podem ser anotados (o abaixo fornece informações atuais
Date
sobre#{now}
):Fábricas personalizados, como fábrica de manipulador de exceção personalizada (ele também permite que as fábricas para
FacesContext
,ExternalContext
,LifeCycle
e muitos mais para que você possa fornecer sua implementação personalizada):Para citar apenas os comumente usados. Se você tiver o
faces-config.xml
preenchimento automático de tags em seu IDE, poderá descobrir todos eles. Apenas os beans gerenciados, validadores, conversores, componentes, renderizadores e casos de navegação ponto a ponto não são mais necessários, graças às novas anotações e navegação implícita.fonte
java.util.HashMap
as#{components}
é armazenado no escopo da solicitação para ter uma visão geral declarativa melhor de todas as ligações de componentes. Por exemplo,binding="#{components.foo}"
para que possa ser referido como o#{components.foo}
que é mais autodocumentado e menos arriscado (devido a conflitos de nomes em potencial) do quebinding="#{foo}"
e#{foo}
.