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
// affichage liste private void doListPersonnes(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setAttribute("Kpimscgos", service.getAll()); // affichage de la vuegetServletContext() .getRequestDispatcher((String) params.get("urlList")).forward(request, response); }
avec service.getAll() dois me retourner une collection
ArrayList Kpim = new ArrayList(); .................. public Collection getAll() { return Kpim; }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:
// affichage de la vuegetServletContext() .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
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">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.