Pessoal, estou desenvolvendo uma aplicação utilizando Facelets, e no desenvolver, me deparei com alguns problemas que podem ser o de vocês que estão começando agora. Estarei listando os principais:
Obs: Quando os problemas ocorreram, estava utilizando a última versão do Facelets (facelets-1.2-DEV-20061110) com o Tomcat v6.0, e Eclipse 3.4.1.
Seguindo tutoriais pela internet, o que eu mais encontrava era essa explicação:
"Adicione as libs "el-api", "el-ri"e "jsf-facelets" na sua pasta libs, faça as configurações no "web.xml" e "faces-config.xml" que estará pronto."
Comigo não foi tão simples assim.
Utilizando o Tomcat, a primeira coisa a se observar, é que na pasta "lib" do mesmo já existe uma biblioteca chamada "el-api.jar". Se você simplesmente adicionar as bibliotecas como é pedido, terão o seguinte erro:
SEVERE: Exception sending context initialized event to listener instance of class org.apache.myfaces.webapp.StartupServletContextListener
java.lang.LinkageError: loader constraint violation: when resolving interface method
javax.servlet.jsp.JspApplicationContext.addELResolver(Ljavax/el/ELResolver;)V" the class loader (instance of org/apache/catalina/loader/WebappClassLoader) of the current class, org/apache/myfaces/webapp/Jsp21FacesInitializer, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ELResolver used in the signature
Ah, então vou tirar a biblioteca do Facelets e deixar a do Tomcat. Bem, você terá outro erro:
Requires FaceletFilter to be initialized with Application!!
Caused by:
com.sun.facelets.FaceletException - Requires FaceletFilter to be initialized with Application!!
Pesquisando na internet, encontrei essa página, com o seguinte post:
I have solved the problem; I had to add a "Filter" in web.xmlNamely:
facelets
com.sun.facelets.webapp.FaceletFilter
facelets
*.xhtml
I found this code in an example that I found on the internet. I don't understand why this is not mentioned in any of the guides on Facelets.
Do you guys also have to use this filter, to run facelets properly?
Eu também não sei pra que serve esse Filter (mas dá certo se você adicionar). E seguindo a documentação do próprio site do Facelets, eu não preciso adicionar nenhum Filter.
Enfim, vamos ao que interessa!
Para o Facelets funcionar perfeitamente comigo, deixei dessa maneira:
- Fiquei utilizando a biblioteca do Tomcat "el-api.jar", ou seja, não adicionei a que vinha no Facelets;
- Adicionei as libs da versão stable (facelets-1.1.14), "jsf-facelets.jar" e "el-impl-1.0.jar";
- Configurei o web.xml e o faces-config do jeito padrão.
Aí sim funcionou! Lembrando que não utilizei nada da última versão do Facelets, e sim da versão stable dele!
Espero ter ajudado, e qualquer novidade coloco aqui! Valeu!

