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:
[code]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
[/code]
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:
[quote]I have solved the problem; I had to add a “Filter” in web.xml
Namely:
facelets com.sun.facelets.webapp.FaceletFilter facelets *.xhtmlI 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?[/quote]
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!