如何使用 struts、JSP 和 Java 从控制器获取数组
Posted
技术标签:
【中文标题】如何使用 struts、JSP 和 Java 从控制器获取数组【英文标题】:How to get an array from the controller using struts, JSP and Java 【发布时间】:2016-10-16 10:05:25 【问题描述】:我想知道这里是否有人知道如何使用 Struts 从控制器获取数组?
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 er!!@#!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 语句以确保它甚至运行但我什么也没得到,我不知道我做错了什么。
编辑:
我本质上想要的是,当您转到 showTeams.jsp
时,它应该向您显示所有使用 Struts 的团队的表格。
【问题讨论】:
你也可以使用struts iterator
标签。
【参考方案1】:
应该从控制器返回视图,结果为getallteams
。因此,您应该调用showTeams
action 将团队加载到 action 类变量中。
private List<Team> teams = new ArrayList<Team>();
public List<Team> getTeams() return teams; ;
需要最后一种方法来评估forEach
标签中的teams
<c:forEach var="team" items="$teams">
<td>$team.id<td>
<td>$team.name<td>
</c:forEach>
【讨论】:
谢谢,我确实忘记在控制器中创建 getTeams() 函数了。【参考方案2】:在过去的 5 年里我没有做任何 struts,所以我不确定你的控制器,但是如果你复制/粘贴你的 JSP 代码,那么你就会遇到一些语法问题。
<td>$team.getId<td>
<td>$team.getName()<td>
getId / getName() => 一个带括号,一个不带 ? 而且您不应该使用 getter 的名称,而是使用属性。 喜欢:
<td>$team.id<td>
<td>$team.name<td>
如果语法正确,您至少应该得到一个空数组(只是标题)。
【讨论】:
以上是关于如何使用 struts、JSP 和 Java 从控制器获取数组的主要内容,如果未能解决你的问题,请参考以下文章
struts2标签中在jsp页面如何给值栈中的list和map赋值
如何在java struts2中将jsp上显示的表导出为pdf