[résolu] erreur fichier jsp+tld

wiss20000
[résolu] erreur fichier jsp+tld

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>
fredericmazue

Sans doute que dans

Quote:

Kpimscgos est une expression alors qu'il devrait être une collection.

wiss20000

fredericmazue wrote:
Sans doute que dans
Kpimscgos est une expression alors qu'il devrait être une collection.

dans ma servlet Kpimscgos est de type Collection :!:
fredericmazue

Es tu sûr :?: :!:

Parce que le message d'erreur dit clairement le contraire :!:

Montre donc un peu de code :!:

wiss20000

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 vue 
    getServletContext() .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;
	 }
fredericmazue

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.

fredericmazue

Quote:
e crois que le problème dans le fichier c.tld

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 vue 
    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...

wiss20000

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

  "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

:!:
ce méssage à été édité
wiss20000

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 :

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

:D :D :D :D :D :D
fredericmazue

Quote:
en fait il y a quelque chose (peut etre la cause de tout cela)

Très certainement en effet.

Quote:
sur le fichier c.tld il y a un triangle jaune(avec éclipse jecrois que c'est un worning ou je ne sait quoi !)

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.

Quote:
sur la linge suivant du c.tld

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...

wiss20000

wiss20000 wrote:
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 :

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

:D :D :D :D :D :D

: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) :!:
fredericmazue

Quote:
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:

Quote:
- 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.

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 :(

wiss20000

fredericmazue wrote:

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.


:!:
j'ai donnée le méssage d'erreur dans mon premier méssage :shock:
org.apache.jasper.JasperException: /WEB-INF/vues/list.jsp(24,1) D'après la TLD, l'attribut items n'accepte aucune expression 
fredericmazue

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.