Outils pour utilisateurs

Outils du site


helloworld:web:java:jsp_jstl_el

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
helloworld:web:java:jsp_jstl_el [2015/09/09 12:00] – ↷ Liens modifiés en raison d'un déplacement. roothelloworld:web:java:jsp_jstl_el [2020/04/26 20:27] (Version actuelle) – Don't convert '' to “ root
Ligne 1: Ligne 1:
 Une page ''JSP'' avec l'utilisation de la librairie ''JSTL'' et des ''EL'' (Element Language) utilise du code ''HTML'' dans lequel est mis des tags provenant de la librairie ''JSTL''. Ce sont ces tags qui appellent les fonctions ''Java''. Le code généré par les appels aux fonctions ''JSP'' et ''JSTL'' est du ''HTML 4.01''. Une page ''JSP'' avec l'utilisation de la librairie ''JSTL'' et des ''EL'' (Element Language) utilise du code ''HTML'' dans lequel est mis des tags provenant de la librairie ''JSTL''. Ce sont ces tags qui appellent les fonctions ''Java''. Le code généré par les appels aux fonctions ''JSP'' et ''JSTL'' est du ''HTML 4.01''.
  
-<note>Tous les exemples ci-dessous utilisent le [[helloworld:design_pattern:bean:java|BeanPersonne]] ainsi que la librairie JSTL 2 qui supportent les EL.</note>+<WRAP center round info 60%> 
 +Tous les exemples ci-dessous utilisent le [[helloworld:design_pattern:bean:java|BeanPersonne]] ainsi que la librairie JSTL 2 qui supportent les EL. 
 +</WRAP>
  
 =====Cycle de vie===== =====Cycle de vie=====
Ligne 7: Ligne 9:
  
 =====Création du projet===== =====Création du projet=====
-Nécessite un projet de type [[eclipse:howto:projet|Dynamic Web Project]] et l'[[eclipse:howto:install_lib|installation]] de la librairie [[https://jstl.java.net/download.html|JSTL]] (bien installer les 2 parties API et Implementation).+Nécessite un projet de type [[ide:eclipse:projet|Dynamic Web Project]] et l'[[ide:eclipse:projet#installation_d_une_librairie]] de la librairie [[https://jstl.java.net/download.html|JSTL]] (bien installer les 2 parties API et Implementation). 
 + 
 +====org.apache.jasper.JasperException: L'uri absolue: http://java.sun.com/jsp/jstl/core==== 
 +  org.apache.jasper.JasperException: L'uri absolue: http://java.sun.com/jsp/jstl/core ne peut être résolu dans le fichier web.xml ou dans les fichiers jar déployés avec cette application 
 +    org.apache.jasper.compiler.DefaultErrorHandler.jspError(Unknown Source) 
 +    org.apache.jasper.compiler.ErrorDispatcher.dispatch(Unknown Source) 
 +    org.apache.jasper.compiler.ErrorDispatcher.jspError(Unknown Source) 
 +    org.apache.jasper.compiler.TagLibraryInfoImpl.generateTldResourcePath(Unknown Source) 
 +    org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(Unknown Source) 
 +    org.apache.jasper.compiler.Parser.parseTaglibDirective(Unknown Source) 
 +    org.apache.jasper.compiler.Parser.parseDirective(Unknown Source) 
 +    org.apache.jasper.compiler.Parser.parseElements(Unknown Source) 
 +    org.apache.jasper.compiler.Parser.parse(Unknown Source) 
 +    org.apache.jasper.compiler.ParserController.doParse(Unknown Source) 
 +    org.apache.jasper.compiler.ParserController.parse(Unknown Source) 
 +    org.apache.jasper.compiler.Compiler.generateJava(Unknown Source) 
 +    org.apache.jasper.compiler.Compiler.compile(Unknown Source) 
 +    org.apache.jasper.compiler.Compiler.compile(Unknown Source) 
 +    org.apache.jasper.compiler.Compiler.compile(Unknown Source) 
 +    org.apache.jasper.JspCompilationContext.compile(Unknown Source) 
 +    org.apache.jasper.servlet.JspServletWrapper.service(Unknown Source) 
 +    org.apache.jasper.servlet.JspServlet.serviceJspFile(Unknown Source) 
 +    org.apache.jasper.servlet.JspServlet.service(Unknown Source) 
 +    javax.servlet.http.HttpServlet.service(Unknown Source) 
 +    org.apache.tomcat.websocket.server.WsFilter.doFilter(Unknown Source) 
 + 
 +Soit la librairie jstl-1.2.jar est manquante dans le dossier ''WEB-INF/lib'', soit elle n'est pas la bonne version. Il existe aussi une version jar qui contient à la fois l'[[http://central.maven.org/maven2/javax/servlet/jstl/1.2/jstl-1.2.jar|API et l'implémentation]], {{ :helloworld:web:java:jsp_jstl_el:jstl-1.2.jar |Archive JSTL 1.2}}. 
 + 
 +[[http://stackoverflow.com/questions/4928271/how-to-install-jstl-the-absolute-uri-http-java-sun-com-jstl-core-cannot-be-r|How to install JSTL? The absolute uri: http://java.sun.com/jstl/core cannot be resolved]] {{ :helloworld:web:java:jsp_jstl_el:jsp_-_how_to_install_jstl_the_absolute_uri_http_java.sun.com_jstl_core_cannot_be_resolved_-_stack_overflow_2020-04-26_8_13_32_pm_.html |Archive du 08/02/2011 le 26/04/2020}}
  
 =====Element Language===== =====Element Language=====
-Les objets implicites sont ([[http://adiguba.developpez.com/tutoriels/j2ee/jsp/el/|Source]]{{:helloworld:web:java:jsp:les_expressions_languages.htm.maff|Archive}}) :+Rappel de [[:helloworld:web:java:jsp|JSP]], les objets implicites sont ([[http://adiguba.developpez.com/tutoriels/j2ee/jsp/el/|Présentation des Expressions Languages]] {{ :helloworld:web:java:jsp_jstl_el:les_expressions_languages_2020-04-26_8_15_01_pm_.html |Archive du 08/08/2011 le 26/04/2020}}) :
   * ''pageContext'' : Accès à l'objet PageContext de la page JSP.   * ''pageContext'' : Accès à l'objet PageContext de la page JSP.
   * ''pageScope'' : Map permettant d'accéder aux différents attributs du scope 'page'.   * ''pageScope'' : Map permettant d'accéder aux différents attributs du scope 'page'.
Ligne 22: Ligne 52:
   * ''cookie'' : Map permettant d'accéder aux différents Cookies.   * ''cookie'' : Map permettant d'accéder aux différents Cookies.
   * ''initParam'' : Map permettant d'accéder aux init-params du web.xml.   * ''initParam'' : Map permettant d'accéder aux init-params du web.xml.
 +
 +=====Syntaxe=====
 +''%%<c:out value="{2+4}" default="6" />%%'' : affiche le résultat de l'expression ''2+4''. Si l'évaluation échoue, la valeur par défaut sera affichée. Cette balise échappe aussi les caractères spéciaux (&, <, >, …).
 +
 +''%%<c:set var="somme" value=${2+4} />%%'' : définie une variable.
 +
 +''%%<c:if test="${EL}">…</c:if>%%'' : test conditionnel. Il n'existe pas de else. Pour en simuler un, il faut passer par la balise ''choose'' avec sa sous-balise ''otherwise''.
 +
 +''%%<c:choose><c:when test="${EL}">…</c:when><c:otherwise>…</c:otherwise></c:choose>%%'' : équivalent à ''switch'', ''case'', ''default''.
 +<code xml>
 +<c:choose>
 +  <c:when test="${16 % 2 == 0}">
 +    <c:out value="16 est un nombre pair." />
 +  </c:when>
 +  <c:otherwise>
 +    <c:out value="16 est un nombre impair." />
 +  </c:otherwise>
 +</c:choose>
 +</code>
 +
 +''<c:forEach>'' : boucle soit d'une variable variant de ''n'' à ''m'', soit en parcourant tous les éléments de type liste (''HashMap'', ''Collection'', …).
 +<code xml>
 +<c:forEach var="i" begin="1" end="10" step="1">
 +  <c:out value="${i}" />
 +</c:forEach>
 +</code>
 +<code xml>
 +<c:forEach var="perso" items="${liste}">
 +  <tr>
 +    <td><c:out value="${perso.taille}" /></td>
 +    <td><c:out value="${perso.yeuxBleus}" /></td>
 +  </tr>
 +</c:forEach>
 +</code>
 +
 +''%%<c:url value="/urlbase/"><c:param name="param" value="valeur" /></c:url>%%'' : ajout avant la base l'équivalent d'un ''#{pageContext.request.contextPath}''. Le rendu sera, par exemple : ''/jstl/urlbase/?param=valeur'' et le lien renverra alors vers ''http://localhost:8080/jstl/urlbase/?param=valeur''.
  
 =====Exemple 1 - La base===== =====Exemple 1 - La base=====
-<note important>Bien importer la JSTL 2 avec ''uri="http://java.sun.com/jsp/jstl/core"'' et non pas la JSTL 1 qui s'importe avec ''uri="http://java.sun.com/jstl/core"''</note>+<WRAP center round important 60%> 
 +Bien importer la JSTL 1.(et 1.1) avec ''%%uri="http://java.sun.com/jsp/jstl/core"%%'' et non pas la JSTL 1.0 qui s'importe avec ''%%uri="http://java.sun.com/jstl/core"%%''. [[http://stackoverflow.com/questions/13285826/can-not-find-the-tag-library-descriptor-for-http-java-sun-com-jsp-jstl-core|Can not find the tag library descriptor for “http://java.sun.com/jsp/jstl/core”]] {{ :helloworld:web:java:jsp_jstl_el:eclipse_-_can_not_find_the_tag_library_descriptor_for_http_java.sun.com_jsp_jstl_core_-_stack_overflow_2020-04-26_8_15_17_pm_.html |Archive du 08/11/2012 le 26/04/2020}} 
 +</WRAP> 
 <file xml indexjsp-jstl.jsp> <file xml indexjsp-jstl.jsp>
 <%@ page language="java" contentType="text/html; charset=UTF-8" <%@ page language="java" contentType="text/html; charset=UTF-8"
Ligne 38: Ligne 107:
   <p>   <p>
     <c:if test="${15 % 2 == 0}">     <c:if test="${15 % 2 == 0}">
-      <c:out value="15 est un nombre pair."></c:out>+      <c:out value="15 est un nombre pair." />
     </c:if>     </c:if>
     <c:if test="${15 % 2 == 1}">     <c:if test="${15 % 2 == 1}">
-      <c:out value="15 est un nombre impair."></c:out>+      <c:out value="15 est un nombre impair." />
     </c:if>     </c:if>
     <br />     <br />
     <c:choose>     <c:choose>
       <c:when test="${16 % 2 == 0}">       <c:when test="${16 % 2 == 0}">
-        <c:out value="16 est un nombre pair."></c:out>+        <c:out value="16 est un nombre pair." />
       </c:when>       </c:when>
       <c:otherwise>       <c:otherwise>
-        <c:out value="16 est un nombre impair."></c:out>+        <c:out value="16 est un nombre impair." />
       </c:otherwise>       </c:otherwise>
     </c:choose>     </c:choose>
Ligne 184: Ligne 253:
 </html> </html>
 </file> </file>
-<note warning>Il se semble pas possible de pouvoir accéder aux ''init-param'' qui sont contenus dans le bloc ''servlet'' sans passer par des ''scriptlets''. Il convient donc d'utiliser de préférence les ''context-param'' qui sont accessibles via ''initParam['nom']'' [[http://www.coderanch.com/how-to/java/InitParamsThruExpressionLanguage|Source]]{{:helloworld:web:java:jsp:init_params.htm.maff|Archive}}.</note>+ 
 +<WRAP center round alert 60%> 
 +Il se semble pas possible de pouvoir accéder aux ''init-param'' qui sont contenus dans le bloc ''servlet'' sans passer par des ''scriptlets''. Il convient donc d'utiliser de préférence les ''context-param'' qui sont accessibles via ''initParam['nom']'' [[https://coderanch.com/wiki/660120/Init-Params-Expression-Language|Init Params Thru Expression Language]] {{ :helloworld:web:java:jsp_jstl_el:init_params_thru_expression_language_wiki_forum_at_coderanch_2020-04-26_8_20_42_pm_.html |Archive du 03/01/2016 le 26/04/2020}}. 
 +</WRAP>
  
 Rendu : Rendu :
Ligne 312: Ligne 384:
     <c:forEach var="perso" items="${liste6.getListePersonne ()}">     <c:forEach var="perso" items="${liste6.getListePersonne ()}">
       <tr>       <tr>
-        <td>${perso.taille}</td> +        <td><c:out value="${perso.taille}" /></td> 
-        <td>${perso.yeuxBleus}</td>+        <td><c:out value="${perso.yeuxBleus}</td>
       </tr>       </tr>
     </c:forEach>     </c:forEach>
helloworld/web/java/jsp_jstl_el.1441792805.txt.gz · Dernière modification : 2015/09/09 12:00 (modification externe)