2010-06-08 7 views
1

Je rencontre un problème avec mon application Struts C'est une application d'inscription de classe et quand l'utilisateur clique sur un bouton "show inscrits", il est supposé montrer les cours auxquels il est inscrit mais il montre rien pour le moment. Struts/Apache ne renvoie aucune erreur, il montre juste une page blanche et je n'arrive pas à comprendre pourquoi.Aide avec Struts Mappage des actions

Ma carte d'action dans mon struts-config:

<action 
     path="/showEnrolled"    
     type="actions.ShowEnrolledAction"   
     name="UserFormEnrolled" 
     scope="request" 
     validate="true"   
     input="/students/StudentMenu.jsp"> 
    <forward 
     name="success" 
     path="/students/enrolled.jsp"/> </action> 

Mon lien vers la page enrolled.jsp jsp:

<li><html:form action="/showEnrolled"> 
<html:hidden property="id" value= "<%=request.getRemoteUser()%>"/> <html:submit value = "View Enrolled Classes"/> 
</html:form> </li> 

Lorsque je clique sur le lien, je ne reçois rien, mais mon menu sur la page. Les en-têtes de texte de la page ne sont même pas affichés.

enrolled.jsp:

<%@ page import="javax.sql.*"%> 
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> 
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> 

<html:html> 
    <head> 
     <title><bean:message key="app.title" /></title> 
     <html:base /> 
    </head> 
<body> 

    <html:errors /> 
    <h1>Enrolled Courses for <%=request.getRemoteUser() %></h1> 
    <table> 
    <tr> 
     <td valign="top"> 
      <jsp:include page="/students/StudentMenu.jsp"/> 
     </td> 
     <td> 
      <table> 
      <tr> 
       <th>Course Title</th> 
       <th>Course ID</th> 
       <th>Class ID</th> 
       <th>Days</th> 
       <th>Start Time</th> 
       <th>End Time</th> 
       <th>Location</th> 
       <th>Instructor</th> 
      </tr>   
      <%-- -------- Iteration Code -------- --%> 
      <% 
       // Get the studentsRowSet 
       RowSet crsEnrolled = (RowSet) request.getAttribute("crsEnrolled"); 

       // Iterate over the RowSet 
       while (crsEnrolled.next()) { 
      %> 
      <tr> 
       <html:form action="/dropClass"> 
       <td> 
        <input type="hidden" name="title" 
        value="<%=crsEnrolled.getString("title") %>" /> 
        <%=crsEnrolled.getString("title") %> 
       </td> 
           <td> 
        <input type="hidden" name="courseid" 
        value="<%=crsEnrolled.getInt("course_number") %>" /> 
        <%=crsEnrolled.getInt("course_id") %> 
       </td> 
           <td> 
        <input type="hidden" name="classid" 
        value="<%=crsEnrolled.getInt("class_id") %>" /> 
        <%=crsEnrolled.getInt("class_id") %> 
       </td> 
           <td> 
        <input type="hidden" name="days" 
        value="<%=crsEnrolled.getString("date_code") %>" /> 
        <%=crsEnrolled.getString("date_code") %> 
       </td> 
           <td> 
        <input type="hidden" name="start" 
        value="<%=crsEnrolled.getTime("start_time") %>" /> 
        <%=crsEnrolled.getTime("start_time") %> 
       </td> 
           <td> 
        <input type="hidden" name="end" 
        value="<%=crsEnrolled.getTime("end_time") %>" /> 
        <%=crsEnrolled.getTime("end_time") %> 
       </td> 
           <td> 
        <input type="hidden" name="location" 
        value="<%=crsEnrolled.getString("cl_location") %>" /> 
        <%=crsEnrolled.getString("cl_location") %> 
       </td> 
       <td> 
        <input type="hidden" name="instructorfirst" 
        value="<%=crsEnrolled.getString("first_name") %>" /> 
        <%=crsEnrolled.getString("first_name") %> 
        <input type="hidden" name="instructorlast" 
        value="<%=crsEnrolled.getString("instructor_last") %>" /> 
        <%=crsEnrolled.getString("last_name") %> 
       </td> 
        <html:hidden property="classId" value="<%=Integer.toString(crsEnrolled.getInt("class_id"))%>" /> 
        <html:hidden property="stuId" value="<%=request.getRemoteUser() %>" /> 
        <td><html:submit value ="Drop" /></td>     
       </html:form> 
      </tr> 
      <% 
       } 
      %> 
      </table> 
     </td> 
    </tr> 
    </table> 

</body> 
</html:html> 

ShowEnrolledAction:

package actions; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.sql.RowSet; 

import model.EnrollModel; 

import org.apache.struts.action.Action; 
import org.apache.struts.action.ActionForm; 
import org.apache.struts.action.ActionForward; 
import org.apache.struts.action.ActionMapping; 

import db.DbException; 
import forms.UserFormEnrolled; 

public class ShowEnrolledAction extends Action{ 
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
      HttpServletRequest request, HttpServletResponse response) 
      throws DbException { 

     // Cast the form 
     UserFormEnrolled iForm = (UserFormEnrolled) form; 
     iForm.setStudentId(request.getRemoteUser()); 

     // Insert the student 
     RowSet crsEnrolled = EnrollModel.getEnrolledClasses(iForm); 
     request.setAttribute("crsEnrolled", crsEnrolled); 

     return mapping.findForward("success"); 
    } 
} 
+1

Quel code avez-vous dans ShowEnrolledAction? Quels sont les contenus de enrolled.jsp? – Tommi

+0

@Tommi J'ai ajouté dans ces morceaux de code, merci d'avoir pris le temps de regarder ça, ça me fait monter le mur. – nicotine

+0

A quoi ressemble le HTML côté client? Est-ce incomplet? À un moment donné, ça s'arrête juste? Si vous supprimez ce code: votre page affiche-t-elle les résultats? –

Répondre

0

Je pense que problème est avec html: balise form dans la boucle while. Sortez-le de la boucle et essayez.

0

si le web.xml <url-pattern>*.do/<url-pattern> est quelque chose comme ça alors dans

<html:form action="/showEnrolled"> 
</html:form> 

s'il vous plaît mentionner html:form action="**/showEnrolled.do**">

Il dépend de ce préfixe là-bas au motif url alors cela devrait être le même préfixe sous forme action.

J'espère que cela vous aidera