salut,
j'ai une application web avec éclipse et Tomcat
l'erreur suivante est apparu :(
org.apache.jasper.JasperException: /WEB-INF/vues/list.jsp(24,1) D'après la TLD, l'attribut items n'accepte aucune expression
voici mon fichier list.jsp
<%@ page language="java" pageEncoding="ISO-8859-1" contentType="text/html;charset=ISO-8859-1"%> <%@ taglib uri="/WEB-INF/c.tld" prefix="c" %> <html> <head> <title>Rapport -- MSC-GOS</title> </head> <h2>MSC-GOS</h2> <table border="1"> <tr> <th>MSC</th> <th>Date</th> <th>Time</th> <th>MMC_SR%</th> <th>MOC_SR%</th> <th>LUP_SR%</th> <th>HOSUCC%</th> <th>PAGING_SR%</th> <th>CP_LOAD%</th> <th>MOSMSUCC%</th> <th>MTSMSUCC%</th> <th></th> </tr> <c:forEach var="variable" items="${Kpimscgos}"> <tr> <td><c:out value="${variable.msc}"/></td> <td><c:out value="${variable.date}"/></td> <td><c:out value="${variable.temps}"/></td> <td><c:out value="${variable.MMC}"/></td> <td><c:out value="${variable.MOC}"/></td> <td><c:out value="${variable.MTC}"/></td> <td><c:out value="${variable.LUP}"/></td> <td><c:out value="${variable.HOSUCC}"/></td> <td><c:out value="${variable.PAGING}"/></td> <td><c:out value="${variable.CP}"/></td> <td><c:out value="${variable.MOSMSUCC}"/></td> <td><c:out value="${variable.MTSMSUCC}"/></td> </tr> </c:forEach> </table> </body> </html>
je crois que le problème dans le fichier c.tld :!: :shock:
le voici
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>c</short-name> <uri>http://java.sun.com/jstl/core</uri> <display-name>JSTL core</display-name> <description>JSTL 1.0 core library</description> <validator> <validator-class> org.apache.taglibs.standard.tlv.JstlCoreTLV </validator-class> <init-param> <param-name>expressionAttributes</param-name> <param-value> out:value out:default out:escapeXml if:test import:url import:context import:charEncoding forEach:items forEach:begin forEach:end forEach:step forTokens:items forTokens:begin forTokens:end forTokens:step param:encode param:name param:value redirect:context redirect:url set:property set:target set:value url:context url:value when:test </param-value> <description> Whitespace-separated list of colon-separated token pairs describing tag:attribute combinations that accept expressions. The validator uses this information to determine which attributes need their syntax validated. </description> </init-param> </validator> <tag> <name>catch</name> <tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class> <body-content>JSP</body-content> <description> Catches any Throwable that occurs in its body and optionally exposes it. </description> <attribute> <name>var</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>choose</name> <tag-class>org.apache.taglibs.standard.tag.common.core.ChooseTag</tag-class> <body-content>JSP</body-content> <description> Simple conditional tag that establishes a context for mutually exclusive conditional operations, marked by <when> and <otherwise> </description> </tag> <tag> <name>out</name> <tag-class>org.apache.taglibs.standard.tag.el.core.OutTag</tag-class> <body-content>JSP</body-content> <description> Like <%= ... >, but for expressions. </description> <attribute> <name>value</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>default</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>escapeXml</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>if</name> <tag-class>org.apache.taglibs.standard.tag.el.core.IfTag</tag-class> <body-content>JSP</body-content> <description> Simple conditional tag, which evalutes its body if the supplied condition is true and optionally exposes a Boolean scripting variable representing the evaluation of this condition </description> <attribute> <name>test</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>var</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>scope</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>import</name> <tag-class>org.apache.taglibs.standard.tag.el.core.ImportTag</tag-class> <tei-class>org.apache.taglibs.standard.tei.ImportTEI</tei-class> <body-content>JSP</body-content> <description> Retrieves an absolute or relative URL and exposes its contents to either the page, a String in 'var', or a Reader in 'varReader'. </description> <attribute> <name>url</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>var</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>scope</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>varReader</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>context</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>charEncoding</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>forEach</name> <tag-class>org.apache.taglibs.standard.tag.el.core.ForEachTag</tag-class> <tei-class>org.apache.taglibs.standard.tei.ForEachTEI</tei-class> <body-content>JSP</body-content> <description> The basic iteration tag, accepting many different collection types and supporting subsetting and other functionality </description> <attribute> <name>items</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>begin</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>end</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>step</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>var</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>varStatus</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>forTokens</name> <tag-class>org.apache.taglibs.standard.tag.el.core.ForTokensTag</tag-class> <body-content>JSP</body-content> <description> Iterates over tokens, separated by the supplied delimeters </description> <attribute> <name>items</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>delims</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>begin</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>end</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>step</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>var</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>varStatus</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>otherwise</name> <tag-class>org.apache.taglibs.standard.tag.common.core.OtherwiseTag</tag-class> <body-content>JSP</body-content> <description> Subtag of <choose> that follows <when> tags and runs only if all of the prior conditions evaluated to 'false' </description> </tag> <tag> <name>param</name> <tag-class>org.apache.taglibs.standard.tag.el.core.ParamTag</tag-class> <body-content>JSP</body-content> <description> Adds a parameter to a containing 'import' tag's URL. </description> <attribute> <name>name</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>value</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>redirect</name> <tag-class>org.apache.taglibs.standard.tag.el.core.RedirectTag</tag-class> <body-content>JSP</body-content> <description> Redirects to a new URL. </description> <attribute> <name>var</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>scope</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>url</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>context</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>remove</name> <tag-class>org.apache.taglibs.standard.tag.common.core.RemoveTag</tag-class> <body-content>empty</body-content> <description> Removes a scoped variable (from a particular scope, if specified). </description> <attribute> <name>var</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>scope</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>set</name> <tag-class>org.apache.taglibs.standard.tag.el.core.SetTag</tag-class> <body-content>JSP</body-content> <description> Sets the result of an expression evaluation in a 'scope' </description> <attribute> <name>var</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>value</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>target</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>property</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>scope</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>url</name> <tag-class>org.apache.taglibs.standard.tag.el.core.UrlTag</tag-class> <body-content>JSP</body-content> <description> Prints or exposes a URL with optional query parameters (via the c:param tag). </description> <attribute> <name>var</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>scope</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>value</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>context</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>when</name> <tag-class>org.apache.taglibs.standard.tag.el.core.WhenTag</tag-class> <body-content>JSP</body-content> <description> Subtag of <choose> that includes its body if its condition evalutes to 'true' </description> <attribute> <name>test</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> </taglib>
Sans doute que dans
Kpimscgos est une expression alors qu'il devrait être une collection.
dans ma servlet Kpimscgos est de type Collection :!:
Es tu sûr :?: :!:
Parce que le message d'erreur dit clairement le contraire :!:
Montre donc un peu de code :!:
voici la partie de ma servlet
getServletContext() .getRequestDispatcher((String) params.get("urlList")).forward(request, response); }
avec service.getAll() dois me retourner une collection
Je vais regarder ça. Pas le temps tout de suite.
S'il te plait, quand tu édites ta question originale pour la modifier, dis le dans le message, sinon ceux qui vont essayer de suivre la conversation ne vont rien y comprendre.
Je ne crois pas. Ce fichier c.tld a fait ses preuves depuis longtemps. S'il y a avait un problème dedans ça se saurait depuis lontemps.
Pardonne moi mais:
getServletContext() .getRequestDispatcher((String) params.get("urlList")).forward(request, res
Comment peut on écrire une code aussi hideux et surtout aussi incompréhensible ? :(
Mais revenons à ton problème.
Donc, à lire ta question, ça devrait marcher.
Mais le foreach est le premier tag exécuté. Que ça plante au premier tag est suspect en soi. Ca peut être le signe que:
- ton fichier web.xml est corrompu, mal formé, ou je ne sais quoi d'autre
- ou que le fichier c.tld n'est pas sous WEB-INF
- ou qu'il y est mais pour une raiosn indéterminée, il n'est pas trouvé par le tomcat.
- ou que les fichiers jstl.jar et standard.jar ne sont pas présents sous WEB-INF/lib
- ou qu'ils sont bien présents, mais pas dans la bonne version.
Je pense que c'est un problème de cet ordre. Bon courage avec cette infâme usine à gaz...
merci,
en fait il y a quelque chose (peut etre la cause de tout cela)
sur le fichier c.tld il y a un triangle jaune(avec éclipse jecrois que c'est un worning ou je ne sait quoi !)
sur la linge suivant du c.tld
:!:
ce méssage à été édité
en fin ça été un prob de version de taglibs :idea:
dans mon xml je dois faire
récupèrer les jars de la JSTL 1.1
et en fin coder la directive taglib suivante dans la jsp :
:D :D :D :D :D :D
Très certainement en effet.
Un warning oui.
Mais ça tu l'as depuis le début. :!: :!:
Mais bon sang de bonsoir de mille tonnerres, tu ne pouvais pas le dire dès la première question. :!: :!:
Encore une fois tu poses des questions sans donner les informations minimum. Vraiment ça décourage de t'aider.
Je ne comprends pas ce que tu veux dire.
Mais peu importe. Va dans l'éditeur, mets le curseur sur ce fameux triangle et regarde le message d'erreur.
Histoire de changer. Histoire que pour une fois on ne parle pas dans le vide, mais que l'on parle à partir d'un message d'erreur **PRECIS**
Groumph...
:arrow: Le message d'erreur que j'ai eu est en principe lié à un problème de version des fichiers standard.jar et jstl.jar.
je suis en J2EE 1.4 (J2EE 1.3) :!:
tu vois ce que je t'avais dit:
Maintenant si tu avais donné le message d'erreur dès le début, il n'y aurait pas fallu 10 messages pour résoudre.
Tu es décourageant et à l'avenir, je pense que je serai moins diligent à essayer de t'aider :(
:!:
j'ai donnée le méssage d'erreur dans mon premier méssage :shock:
Tu as vraiment la tête dure...
Je voulais dire le message d'erreur "en plus", celui du warning, relatif à c.tld. c'est de celui-là qu'on parle dans les derniers messages non ?
Bref, je voulais dire, si tu avais donné toutes les informations, donc celle-là depuis le début cela aurait été plus simple. Par exemple je n'aurais pas perdu mon temps à te dire qu'il fallait une collection au lieu d'une expression, parce que j'aurais tout de suite vu que le problème était ailleurs.
Bon je sais bien qu'avec toi et pour toi ce n'est pas toujours facile car il y a le problème de la langue.
Tu sais j'en tiens compte, sinon il y a longtemps que je t'aurais laissé tombé. Mais vraiment tu dois faire un effort de rigueur, au moins sur les informations que tu donnes en posant tes questions.