2010-09-20 5 views
3

J'ai des lignes de beans DAO récupérées dans une liste. Dans ma JSP j'accède à la liste pour parcourir à travers pour remplir ma page. Ma page JSP ne peut pas accéder à la liste car elle indique qu'elle doit être une chaîne lorsque j'exécute un request.getParameter. Comment puis-je convertir cela en chaîne éventuellement peupler ma page?Conversion d'une liste en chaîne pour remplir une page Web dans JSP

public List getAccessRequest() 
{ 
    List accessRequesttList = new ArrayList()); // parse List to string 
    //AccessRequest accessrequest = null; 
    AccessRequest accessRequest = new AccessRequest()); 

    try 
    { 
     System.out.println("Try statement begins AccessRequestDAO"); 
     PreparedStatement accrqststmt = super.getConnection().prepareStatement(AccRqstSqlStmt); 

     ResultSet resultSet = accrqststmt.executeQuery(); 

     while (resultSet.next()) 
     { 
      // Creating an instant of job follows 
      accessRequest = new Accessrequest(); 

      accessRequest.setJOB_NAME(resultSet.getString("job_name")); 
      accessRequest.setRequest_ts(resultSet.getTime("request_ts")); 
      accessRequestList.add(accessRequest); 
      Iterator iterator = accessRequestList.iterator(); 

      while (iterator.hasNext()) 
      { 
       accessRequest = (Accessrequest) iterator.next(); 
      } 
     } 
     return (accessRequestList); 

Mon regard JSP comme ci-dessous:

 <% 
      List jobList = request.getParameter("acccessrequests"); // parse List to String 

      Iterator iterator = jobList.iterator(); 
      while (iterator.hasNext()) 
      { 
       accessRequest = (AccessRequest) iterator.next()); 
     %> 
       <tr> 
       <td><input type="checkbox" name="<%accessRequest.getApproval_ind(); %>"></td> 
       <td><input type="text" id="jobname' name="accessRequests" value="job_name"></td> 
+2

Pourquoi cette question est-elle marquée communauté wiki? – BalusC

Répondre

2

HttpServletRequest#getParameter() retourne un String, pas List. Donc le compilateur a raison.

Je ne sais pas comment vous avez jamais défini le List en tant que paramètre de demande, il n'y a pas une telle méthode comme HttpServletRequest#setParameter(). Donc, vous êtes probablement en train de mal interpréter quelque chose. L'approche normale consiste à définir la liste en tant que demande attribut par HttpServletRequest#setAttribute() et y accéder dans JSP par EL (langage d'expression) comme ${attributeName}. Vous pouvez également itérer sur la liste à l'aide de la balise JSTL <c:forEach>.

En supposant que vous avez défini la liste dans le périmètre de la requête en utilisant un Servlet comme suit ...

request.setAttribute("list", list); 

... Voici un exemple de coup d'envoi comment itérer sur la liste:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
... 
<table> 
    <c:forEach items="${list}" var="item"> 
     <tr> 
      <td>${item.property1}</td> 
      <td>${item.property2}</td> 
      <td>${item.property3}</td> 
     </tr> 
    </c:forEach> 
</table> 
+0

Ceci est mon code qui récupère les lignes d'une base de données dans une servlet, ma logique métier: – Scott

+0

Je n'utilise pas JSTL. J'utilise itérateur & while (next) pour lire un nombre infini de lignes récupérées. Puis remplissez ma page Web avec les données de ligne. – Scott

+0

C'est votre choix, mais je recommande fortement de lire [cette réponse] (http://stackoverflow.com/q/3177733) en ce qui concerne ces scriptlets démodés. En outre, avez-vous résolu votre problème? Vous avez inclus du code, mais vous n'avez pas stocké la liste en tant qu'attribut ** de demande ** et vous tentez toujours d'accéder à la liste à partir de votre DAO en tant que paramètre de demande ** **. Comprenez-vous par exemple comprendre ma réponse? Si non, alors s'il vous plaît élaborer quelles parties pas. Je suggérerais de passer à travers [un peu décent] (http://stackoverflow.com/tags/servlets/info) JSP/Servlet tutoriel/livre en attendant. – BalusC

0

Alhamdulillah, Dieu merci!

Cela m'aide beaucoup. J'essaie de créer mon propre framework Web Java. Avant de lire ce contrôle qualité, je ne sais pas comment accéder à un objet (par exemple, une ligne de table) à partir d'une JSP. Je viens de le rediriger et de laisser le code de base de données dans JSP, généré par DreamWeaver. Maintenant je sais comment le faire. Par exemple, ceci est un BiroController, qui affichent des données de Biro Tableau:

public void index() throws IOException, ServletException { 
    List list=new ArrayList(); 
    list.add(BiroModel.create("1", "SDM")); 
    list.add(BiroModel.create("2", "Keuangan")); 
    request.setAttribute("list", list);   
    super.index(); 
} 

tout d'abord, je remplir un tableau (par la suite, cela viendra de la table de base de données). puis définissez attribut de requête, puis appeler la méthode d'index superclasse:

public void index() throws IOException, ServletException {   
    RequestDispatcher rd = request.getRequestDispatcher(viewPage); 
    if(rd!=null){ 
     rd.forward(request, response); 
    }else{ 
     PrintWriter out = response.getWriter(); 
     out.print("can not dispatch to " + viewPage); 
    } 
    //OLD Code : response.sendRedirect(ServletUtil.getBaseUrl(request) + viewPage) 
} 

Et, je l'ai fait que vous avez demandé dans la JSP:

<c:forEach items="${list}" var="item"> 
    <tr> 
     <td>${item.idbiro}</td> 
     <td>${item.biro}</td> 
    </tr> 
</c:forEach> 

J'utilise Netbeans, donc je peux facilement prendre bibliothèque JSTL de la Liste de la bibliothèque disponible

Cela fonctionne avec charme .. :) tq

Questions connexes