2016-06-15 6 views
2

Ich möchte wissen, ob jemand hier weiß, wie man ein Array von einem Controller mit Struts bekommen?Wie bekomme ich ein Array vom Controller mit Struts, JSP und Java

showTeams.jsp

<%@page import="java.util.ArrayList"%> 
<%@page import="nl.***.controller.TeamController"%> 
<%@ taglib prefix="s" uri="/struts-tags"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@include file="includes/layout.jsp" %> 
<div class="col-lg-12"> 
    <h1>Alle Teams</h1> 
    <table> 
     <caption><h1>List of Teams</h1></caption> 
     <th>ID Team</th> 
     <th>Naam Team</th> 
     <tr> 
      <c:forEach var="team" items="${teams}"> 
       <td>${team.getId}<td> 
       <td>${team.getName()}<td> 
      </c:forEach> 
     </tr> 
    </table> 
</div> 
<a href="index.jsp">Back to Start</a> 
<%@include file="includes/footer.jsp" %> 

TeamController.java

package nl.***.controller; 

import java.util.ArrayList; 
import nl.***.datalayer.DAOTeam; 
import nl.***.models.Team; 
import com.opensymphony.xwork2.ActionSupport; 
/** 
* 
* @author 
*/ 
public class TeamController extends ActionSupport{ 
    private String name; 
    ArrayList<Team> teams = new ArrayList<Team>(); 

    public String execute() throws Exception{ 
     return "createTeam"; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String addTeamToDB(String name){ 
     try{ 
      Team t = new Team(name); 
      DAOTeam.getInstance().createTeam(t); 
      return "<h1>Team " + name + " is toegevoegd aan de Database</h1>"; 
     }catch(Exception e){ 
     return "<h1>FAILED with message" + e.getMessage() + "</h1>"; 
     } 
    } 

    public String getAllTeams(){ 
     teams = DAOTeam.getInstance().loadTeams(); 
     System.out.println("ik ben [email protected]#!EWDSRETGDFQTWTRE"); //for testing, removed when done 
     //mapping.findForward("showTeams"); 
     return "getallteams"; 
    } 
} 

struts.xml

<struts> 
<constant name="struts.devMode" value="true" /> 
    <package name="teamcreate" extends="struts-default"> 
     <action name="createTeam" 
      class="controller.TeamController" 
      method="execute"> 
      <result name="createTeam">/view/prossesTeam.jsp</result> 
     </action> 
    </package> 
    <package name="teamLoad" extends="struts-default"> 
      <action name="showTeams" 
      class="controller.TeamController" 
      method="getallteams"> 
      <result name="getallteams">/view/showTeams.jsp</result> 

     </action> 
    </package> 
</struts> 

Wenn lade ich die Seite es hat nicht das Array "Teams" in der Steuerung definiert. Ich habe versucht, Werte in struts.xml zu ändern, aber immer noch nichts. Wenn versucht wird, eine if-Anweisung in der Ausführungsfunktion in TeamController zu machen, um sicherzustellen, dass es sogar lief, aber ich nichts habe, weiß ich nicht, was ich falsch mache.

EDIT: Was im Wesentlichen möchte ich, dass, wenn Sie showTeams.jsp gehen, sollte es eine Tabelle mit allen Teams zeigen Struts.

+0

Sie verwenden 'zu iterator' Tag Streben zu bewerten. –

Antwort

1

Die Ansicht sollte vom Controller mit dem Ergebnis getallteams zurückgegeben werden. Sie sollten also die Aktion showTeams aufrufen, um Teams in die Aktionsklassenvariable zu laden.

private List<Team> teams = new ArrayList<Team>(); 

public List<Team> getTeams() { return teams; }; 

Die letzte Methode ist erforderlich, teams im forEach Tag

<c:forEach var="team" items="${teams}"> 
    <td>${team.id}<td> 
    <td>${team.name}<td> 
</c:forEach> 
+0

Dank habe ich tatsächlich vergessen, eine getTeams() -Funktion in den Controller zu machen, es funktioniert jetzt. – hunteroooox

+0

Sie können diese Antwort aufwerten, um Ihren Dank zu bestätigen. –

0

Ich habe in den letzten 5 Jahren keine Struts gemacht, also bin ich mir nicht sicher über Ihren Controller, aber wenn Sie Ihren Code der JSP kopieren/einfügen, dann haben Sie ein Syntaxproblem.

<td>${team.getId}<td> 
<td>${team.getName()}<td> 

getId/getName() => eins mit Klammern, eins ohne? Und Sie sollten nicht den Namen des Getters, sondern die Eigenschaft verwenden. Like:

<td>${team.id}<td> 
<td>${team.name}<td> 

Wenn die Syntax korrekt ist, sollten Sie zumindest ein leeres Array erhalten (nur die Header).

+0

oh ich korrigierte es, aber immer noch noting – hunteroooox

Verwandte Themen