[JAVA] Jsp et balise avec corps
finch
-
Utilisateur anonyme -
Utilisateur anonyme -
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.
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
La partie de la classe java du tag :
selectListBrochure.java
Le tld précise le type de la variable :
Caddie.tld
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>
…
A voir également:
- [JAVA] Jsp et balise avec corps
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
1 réponse
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
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
par:
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:
par:
;-)
HackTrack
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