2016-06-15 3 views
2

Strutsを使用してコントローラから配列を取得する方法を知っている人がいますか?struts、JSP、および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> 

私はロードページにはコントローラーで定義された配列 'チーム'がありません。私はstruts.xmlの値を変更しようとしましたが、まだ何もありません。 TeamControllerの実行関数でifステートメントを実行しようとすると、それも実行されていることを確認しようとしたが、何も得られなかった。何が間違っているのか分からない。

EDIT: 私は基本的に欲しいあなたがshowTeams.jspに行くとき、それはStrutsのを使用して、すべてのチームとあなたのテーブルを示すべきであるということです。

+0

を評価するために必要とされます。 –

答えて

1

結果はコントローラから返され、結果はgetallteamsです。したがって、showTeamsアクションを呼び出してチームをアクションクラス変数にロードする必要があります。

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

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

最後の方法は、あなたがあまりにも `ストラットiterator`タグを使用することができますforEachタグでteams

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

ありがとう私は実際に今すぐ動作するコントローラでgetTeams()関数を作るのを忘れてしまいました。 – hunteroooox

+0

この回答をアップホートして、あなたの感謝を証明することができます。 –

0

私は過去5年間は何もしていませんでしたので、コントローラについてはわかりませんが、JSPのコードをコピー/ペーストすると文法上の問題があります。

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

getId/getName()=>大文字と小文字の区別なしの1つです。 そしてゲッターの名前ではなくプロパティを使うべきです。 ように:構文が正しい場合

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

、あなたは少なくとも空の配列(ヘッダだけ)を取得する必要があります。

+0

オハイオ州私はそれを訂正しましたがまだ気づいています – hunteroooox

関連する問題