Je dois enregistrer un ELResolver
personnalisé pour un projet Google App Engine.GAE/J: impossible d'enregistrer un ELResolver personnalisé
Comme il doit être enregistré avant toute demande reçue, as specified by the Javadoc:
It is illegal to register an ELResolver after the application has received any request from the client. If an attempt is made to register an ELResolver after that time, an IllegalStateException is thrown.
J'utilise un ServletContextListener:
public class RegisterCustomELResolver implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext context = sce.getServletContext();
JspApplicationContext jspContext =
JspFactory.getDefaultFactory().getJspApplicationContext(context);
jspContext.addELResolver(new MyELResolver());
}
...
}
Le problème est que JspFactory.getDefaultFactory()
retourne toujours nulle. J'ai déjà rempli un rapport de bug. Une idée pour une solution de contournement?
bien! Maintenant, j'obtiens un 'java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext (Ljavax/servlet/ServletContext;) Ljavax/servlet/jsp/JspApplicationContext;' exception. La version JSP est 2.0 où 'getApplicationContext()' est défini pour JSP 2.1. Je n'ai définitivement pas de chance – dfa
'ELResolver' est aussi JSP 2.1. GAE est vraiment JSP 2.0? Je m'attendrais à ce que ce soit JSP 2.1. Est-ce que votre 'web.xml' est déclaré comme Servlet 2.5? Exemple ici: http://snipplr.com/view/3775/minimal-webxml-webapp-descriptor-version-25/ – BalusC
2.5, bien sur :) – dfa