JSP/JSTL et passage de variables...(débutant)

JSP/JSTL et passage de variables...(débutant) - Java - Programmation

Marsh Posté le 18-04-2006 à 09:32:21    

QUESTION 1
----------
 
 
pourquoi je n'arrive pas à afficher les propriétés de mon UserBean ?
 


<%@ page contentType="text/html" import="ecommerce.*,bean.UserBean,java.util.List"  
%>
<%@ taglib uri="/jstl/c" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>Users</title>
 </head>
 <body>
  <jsp:scriptlet>
   IEcommerce ecom = (IEcommerce) application.getAttribute("ecom" );
   List users = ecom.listUsers();
   pageContext.setAttribute("users",users);
  </jsp:scriptlet>
  <table border="1">
   <c:forEach items="${users}" var="user" varStatus="status" begin="0" end="2">
    <tr>
     <td><c:out value="${user.login}"></c:out></td>
     <td><c:out value="${user.pass}"></c:out></td>
    </tr>
   </c:forEach>
  </table>
 </body>
</html>


 
En fait les instructions
 


<c:out value="${user.login}">
<c:out value="${user.pass}">


 
considèrent leur "value" comme une string :/ ... et donc m'affichent "${user.login}" et "${user.pass}" dans leur cellule respective du tableau.
 
Une idée ?
 
RQ : en adoptant pour les bon vieux "for" d'une scriptlet, ca marche parfait ! :
 


...
<body>
  <%  
   IEcommerce ecom = (IEcommerce) application.getAttribute("ecom" );
   List<UserBean> users = ecom.listUsers();
  %>
  <table border="1">
   <jsp:scriptlet>
   for(UserBean user : users) {
   </jsp:scriptlet>
    <tr>
     <td><%= user.getFirstname()%></td>
     <td><%= user.getSurname()%></td>
     <td><%= user.getEmail()%></td>
    </tr>
   <jsp:scriptlet>
   }
   </jsp:scriptlet>
  </table>
</body>
...


 
QUESTION 2
----------
 
En fait le code de la RQ de la question 1 marche mais si à la place de "<%...%> je mets "<jsp:scriptlet>...</jsp:scriptlet>
j'obtiens une erreur :


org.apache.jasper.JasperException: /pure_jsps/user.jsp(11,17) Tag &lt;jsp:scriptlet&gt; non terminé


 
En fait c'est le type paramétré de Java1.5 qui fait planter ("List<UserBean>" à remplacer par "List" ) ... conclusion : JSP 'incompatible' avec Java 1.5 :??:
 
RQ : j'utilise un serveur Tomcat 5.x
 
 
QUESTION 3
----------
 
Comment passer une variable d'une JSP à une servlet ?  
...j'ai essaié de mettre dans une JSP des choses du style request.setAttribute() et de faire un request.getAttribute()
dans la servlet qui traite cette page JSP ou bien encore de faire un <jsp:useBean id="userForm" class="bean.UserBean" scope="request">
dans la JSP puis de recupérer dans la servlet avec un request.getAttribute("UserForm" ) mais rien marche, j'ai un pointeur null.
J'ai l'impression de ne pas bien maitriser le passage de variable dans ces applis web :/.
En fait, pour transmettre des attributs que l'on met dans la request, on doit forcément faire un forward non ?
 ... parce que ma JSP est juste un formulaire qui attends d'etre soumis par l'internaute.
 
QUESTION 4
----------
 
Etant donné mon problème a la question 3, je passe des infos de la JSP à la servlet (lorsque l'internaute soumet le formulaire) a l'aide de test avec la jstl  
(<c:if></c:if> )
 


<jsp:directive.page import="bean.UserBean" contentType="text/html" />
<%@ taglib uri="/jstl/c" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>User Update/Add</title>
 </head>
 <body>
  <%! Boolean isAddAction = false; %>
  <jsp:useBean id="userForm" class="bean.UserBean" scope="request">
   bean instantiated !<br/>
   <% isAddAction = true; %>
  </jsp:useBean>
  <form method="get" action="servlet">
   <p>
   login : <input type="text" name="login" value="<%=userForm.getLogin()%>"/><br/>
   password : <input type="text" name="pass" value="<%=userForm.getPass()%>"/><br/>
   firstname : <input type="text" name="firstname" value="<%=userForm.getFirstname()%>"/><br/>
   surname : <input type="text" name="surname" value="<%=userForm.getSurname()%>"/><br/>
   email : <input type="text" name="email" value="<%=userForm.getEmail()%>"/><br/>
   <input type="hidden" name="id" value="<%=userForm.getId()%>"/><br/>
   <input type="hidden" name="page" value="user_update_add"/><br/>
   <c:if test="${isAddAction}">
    out.write("isAddAction = true" );
    <input type="hidden" name="isAddAction" value="true"/><br/>
   </c:if>
   <c:if test="${not isAddAction}">  
    out.write("isAddAction = false" );
    <input type="hidden" name="isAddAction" value="false"/><br/>
   </c:if>
   <input type="submit" value="Submit"/>
   </p>
  </form>
 </body>
</html>


 
Cependant, il n'y a AUCUN passage dans les 2 tests ! (qui sont complémentaires pourtant) ... d"cidément j'ai un pb avec la JSTL :/.
Aidez-moi :cry:
 

Reply

Marsh Posté le 18-04-2006 à 09:32:21   

Reply

Marsh Posté le 18-04-2006 à 11:29:26    

c'est trop difficile mes questions ?  [:amandine75011]

Reply

Marsh Posté le 18-04-2006 à 12:40:12    

j'hallucine, personne connaît j2ee ou quoi  :ouch:

Reply

Marsh Posté le 18-04-2006 à 16:18:24    

ché pas, ton truc on dirait du code de 1997, ça me donne pas super envie de lire :/


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 18-04-2006 à 17:15:23    

ouai bon c'est pas du struts mais bon ... c'est comme si tu pourrais pas lire un code en C car c'est trop vieux. :/.
Un petit effort stp ;)

Reply

Marsh Posté le 19-04-2006 à 09:40:36    

:bounce:

Reply

Marsh Posté le 24-04-2006 à 11:49:25    

Wowww ! le flop  :ouch:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed