Custom FaceletFactory no JSF 2.2 / Alternativas para facelets de host virtual
Desde Mojarra / JSF 2.2. não é mais possível fornecer um costumeFaceletFactory
usando umweb.xml
parâmetro de contexto:
<context-param>
<param-name>com.sun.faces.faceletFactory</param-name>
<param-value>my.faces.overrides.MyFaceletFactory</param-value>
</context-param>
Meu aplicativo fornece alguns recursos do CMS, incluindo suporte a host virtual para atender diferentes páginas (facelets) com base no domínio solicitado no momento. assimhttp://www.domain1.com/index.xhtml
retorna conteúdo diferente dehttp://www.otherdomain.com/index.xhtml
. A mecânica por trás disso não é tão grande assim, usando um resolvedor de recursos personalizado. O verdadeiro problema ao fazer isso é que o jsf armazena em cache os facelets apenas com base em sua uri solicitada, que não contém o nome do host ("/index.xhtml"
em ambos os casos). Eu resolvi esse problema simplesmente adicionando o nome do host a ele no meu costumeFaceletFactory
: uri = "/" + getCleanHostName() + "://" + uri;
. Com o JSF 2.2, isso não parece mais possível. Existe alguma outra maneira de arquivar o comportamento correto de armazenamento em cache no JSF 2.2? Desabilitar o cache de faces não é uma opção devido ao seu impacto no desempenho.