Rechercher : dans
Par :

[JAVA] Jsp et balise avec corps

Dernière réponse le 22 jan 2007 à 12:02:22 finch, le 18 jan 2007 à 11:22:20 
 Signaler ce message aux modérateurs

Salut à tous!

J'ai un problème avec les balises avec corps et les jsp.
Je dois insérer la requête dans le corps de la balise.

…
<caddie.selectListBrochure>

            SELECT * FROM brochures WHERE categorie LIKE 'DIVORCE';

</caddie.selectListBrochure>  
…
<% while(rs.next()) { %>
…


Mais le jsp ne détecte pas la variable « rs » lors du rs.next() (« cannot find symbol symbol : variable rs »).
rs instancie la classe ResultSet. C'est objet conçu dans la classe du Tag a partir de la requête dans le corps.

J'ai suivit les examples du prof dans son livre. On a regardé avec d'autres étudiants qui y arrive...mais personne n'a trouvé le problème :aie:

Voilà les extraits du code (sous NetBeans 5.5 ):

Le Jsp :

AffichageBrochure.jsp

…
<%@taglib uri="/WEB-INF/tlds/caddie.tld" prefix="caddie"%>
…
<caddie.selectListBrochure>

            SELECT * FROM brochures WHERE categorie LIKE 'DIVORCE';

</caddie.selectListBrochure>  
...
<% while(rs.next()) { %>
…


La partie de la classe java du tag :

selectListBrochure.java


…
private void writeTagBodyContent(JspWriter out, BodyContent bodyContent) throws IOException {

        String requete = bodyContent.getString();

        ResultSet rs = null;

        try {
            rs = instruc.executeQuery(requete);
            pageContext.setAttribute("rs",rs);
        } catch(SQLException e) {
            arret=true;
        }
        bodyContent.writeOut(out);
        bodyContent.clearBody();
    }

…



Le tld précise le type de la variable :

Caddie.tld

…
  <tag>
    <name>selectListBrochure</name>
    <tag-class>caddie.selectListBrochure</tag-class>
    <body-content>JSP</body-content>
    <variable>
        <name-given>rs</name-given>
        <variable-class>java.sql.ResultSet</variable-class>
        <declare>true</declare>
        <scope>AT_END</scope>
    </variable>
  </tag>
…
Configuration: Windows XP
Firefox 2.0.0.1

Meilleures réponses pour « [JAVA] Jsp et balise avec corps » dans :
[Firefox] plugin Java Jre de Sun VoirA) Les différentes variantes Java chez Sun B) Installation sous Mandriva Limited Edition 2005 ETAPE 1 ETAPE 2: Création du lien symbolique C) Installation sous debian lenny D) Installation sous ubuntu hardy heron A) Les différentes...
Installer Java sous Ubuntu VoirPar défaut, Firefox n'est pas fourni avec Java. Voici comment procéder pour l'installer: Ouvrez un terminal (Menu Applications > Accessoires > Terminal) et tapez: sudo aptitude install sun-java6-jre sun-java6-plugin ou sudo aptitude install ...
[Logiciel libre] Installation firefox 2.0+java+flash VoirInstallation firefox 2.0+java+flash en ligne de commande A. INTRODUCTION B. INSTALLATION FIREFOX 1. Création d'environnement 2. Téléchargement et vérification de la signature 3. Installation de Firefox 4. Démarrage de l'application C....
Télécharger Java Runtime Environment VoirJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces...
Java Server Pages - Les scriptlets VoirPrésentation des scriptlets JSP Une scriptlet JSP est un bloc de code Java compris entre les balises suivantes : Le code Java (qui doit naturellement être valide) présent entre les balises devient le corps de la...
Introduction aux Java Server Pages VoirPrésentation des Java Server Pages Les JSP (Java Server Pages) sont un standard permettant de développer des applications Web interactives, c'est-à-dire dont le contenu est dynamique. C'est-à-dire qu'une page web JSP (repérable par l'extension...
Les directives de Java Server Pages (JSP) VoirPrésentation des directives JSP Les directives JSP sont des instructions insérées dans des tags HTML spéciaux. La syntaxe des directives JSP est la suivante : Les directives JSP permettent d'indiquer : le...

1

 HackTrack, le 22 jan 2007 à 12:02:22
  • +1

Salut !

A première vue, le code de ton custom tag est correctement écrit.

Je pense que l'erreur provient de ta requête SQL.

Dans ta requête SQL, tu dois peut-être remplacer

LIKE ('DIVORCE')
par
LIKE ('%DIVORCE%')
ou quelque chose de semblable.

Si ta requête est correcte, c'est qu'il y a un problème durant l'exécution de celle-ci.
Afin de la détecter, remplace
        try {
            rs = instruc.executeQuery(requete);
            pageContext.setAttribute("rs",rs);
        } catch(SQLException e) {
            arret=true;
        }

par:
        try {
            rs = instruc.executeQuery(requete);
            pageContext.setAttribute("rs",rs);
        } catch(SQLException e) {
            arret=true;
            e.printStackTrace();
        }


Tu verras alors si c'est à cet instant que survient l'erreur et tu pourras débuguer en utilisant les infos du stacktrace (peut-être un problème de connexion à ta base de données?)

Si l'erreur ne provient pas de là, c'est que ta requête renvoie "null".

Pour éviter que cela ne "plante" ton application, remplace:

<caddie.selectListBrochure>

            SELECT * FROM brochures WHERE categorie LIKE 'DIVORCE';

</caddie.selectListBrochure>  
...
<% while(rs.next()) { %>
…


par:
<caddie.selectListBrochure>

            SELECT * FROM brochures WHERE categorie LIKE 'DIVORCE';

</caddie.selectListBrochure>  
...
<% 
    if(rs!=null){
      while(rs.next()) {
        …
      }
    }else{
      ...
    }
%>


;-)
HackTrack

Répondre à HackTrack