JSP 2.0, JSTL 1.1 – impossible d’utiliser les expressions languages dans des taglibs
Vous vous êtes décidé d’écrire les pages JSP 2.0 avec la JSTL 1.1 le tout en XML[1]. Il faut dire au revoir aux scriptlets et bonjour aux EL ! 😉 Mais vous rencontrez peut-être cette erreur :
org.apache.jasper.JasperException: /index.jsp(33,32) According to TLD or attribute directive in tag file, attribute value does not accept any expressions org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:585) org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) java.security.AccessController.doPrivileged(Native Method) javax.security.auth.Subject.doAsPrivileged(Subject.java:517) org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275) org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161) java.security.AccessController.doPrivileged(Native Method) java.security.AccessController.doPrivileged(Native Method) org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085) org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263) org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:239) org.apache.struts.tiles.TilesRequestProcessor.internalModuleRelativeForward(TilesRequestProcessor.java:341) org.apache.struts.action.RequestProcessor.processForward(RequestProcessor.java:572) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:221) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) javax.servlet.http.HttpServlet.service(HttpServlet.java:743) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:585) org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) java.security.AccessController.doPrivileged(Native Method) javax.security.auth.Subject.doAsPrivileged(Subject.java:517) org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275) org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)
Votre page JSP commence sûrement par quelque chose qui ressemble à ceci :
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:c="http://java.sun.com/jstl/core" xmlns="http://www.w3.org/1999/xhtml" version="2.0">
Si c’est le cas, la déclaration ci-dessus correspond à la JSTL 1.0.
Le problème vient du fait que vous utilisez un moteur JSP 2.0 qui traite les EL avant d’appeler les taglibs. Ce moteur n’est pas compatible avec les taglibs qui intègrent la gestion des EL comme le fait la JSTL 1.0. Pour résoudre ce problème, il faut utiliser la JSTL 1.1 qui est faite pour les JSP 2.0.
Pour déclarer l’utilisation des JSTL 1.1, votre page JSP doit commencer ainsi :
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns="http://www.w3.org/1999/xhtml" version="2.0">
Je profite pour vous rappeler les excellentes présentation d’adiGuba sur :
- La JSTL
- Les EL
- Les JSP Taglibs
Vous allez enfin pouvoir écrire des JSP 2.0 tout en utilisant la puissance des EL.
Notes
[1] Appelées également JSPX.
https://blog.lecacheur.com/2006/08/16/jsp-20-jstl-11-impossible-d-utiliser-les-expressions-languages-dans-des-taglibs/DéveloppementJava EEjsp,jstlVous vous êtes décidé d'écrire les pages JSP 2.0 avec la JSTL 1.1 le tout en XML. Il faut dire au revoir aux scriptlets et bonjour aux EL ! 😉 Mais vous rencontrez peut-être cette erreur : org.apache.jasper.JasperException: /index.jsp(33,32) According to TLD or attribute directive in tag file, attribute value...SeBSébastien LECACHEUR23r0@laposte.netAdministratorLe weblogue de SeB
Laisser un commentaire