在地图上迭代并在jsp中显示

在地图上迭代并在jsp中显示,jsp,struts,Jsp,Struts,我必须在页面中显示对象的地图 Struts操作类如下所示: public class DonorListAction extends Action{ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpSer

我必须在页面中显示对象的地图

Struts操作类如下所示:

public class DonorListAction extends Action{
    public ActionForward execute(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request, 
                                 HttpServletResponse response) throws Exception
    {
        DonorDAO donorDAO = new DonorDAO(); 
        HashMap<Integer, DonorDetailsForm> donorMap =donorDAO.getDonorList();
        request.setAttribute("donorMap",donorMap);
        return mapping.findForward("success"); 
    }
}
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
公共类DonorListAction扩展操作{
公共ActionForward执行(ActionMapping映射、ActionForm表单、,
HttpServletRequest请求,
HttpServletResponse)引发异常
{
DonorDAO DonorDAO=新DonorDAO();
HashMap donorMap=donorDAO.getDonorList();
setAttribute(“donorMap”,donorMap);
返回映射。findForward(“成功”);
}
}
jsp页面如下所示:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<%@ page language="java"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<%@ taglib uri="/WEB-INF/c.tld" prefix="c"%>

<html>
<HEAD><TITLE>List of Donors</TITLE></HEAD>
<body BGCOLOR="#FDF5E6">
<table align="center" border="1">
<tr>
<th align="center">Donor ID</th>
<th align="center">Name</th> 
<th align="center">Email Address</th>
<th align="center">Phone Number</th> 
</tr> 
<c:forEach var="donor" items="${donorMap}"> 
<tr>
<td align="right">${donor.key}</td>
<td align="right">${donor.value.firstName} ${donor.value.lastName}</td> 
<td align="right">${donor.value.emailAddress}</td>
<td align="right">${donor.value.phoneNumber}</td> 
</tr> 
</c:forEach> 
</table> 
</body>
</html> 

捐助者名单
捐赠者ID
名称
电子邮件地址
电话号码
${provider.key}
${donor.value.firstName}${donor.value.lastName}
${donor.value.emailAddress}
${donor.value.phoneNumber}
现在,当我执行此代码时,我得到:

javax.el.PropertyNotFoundException: Property 'key' not found on type java.lang.String javax.el.BeanELResolver$BeanProperties.get(BeanELR esolver.java:193) javax.el.BeanELResolver$BeanProperties.access$400( BeanELResolver.java:170) javax.el.BeanELResolver.property(BeanELResolver.ja va:279) javax.el.BeanELResolver.getValue(BeanELResolver.ja va:60) javax.el.CompositeELResolver.getValue(CompositeELR esolver.java:54) org.apache.el.parser.AstValue.getValue(AstValue.ja va:118) org.apache.el.ValueExpressionImpl.getValue(ValueEx pressionImpl.java:186) org.apache.jasper.runtime.PageContextImpl.propriet aryEvaluate(PageContextImpl.java:925) org.apache.jsp.jsp.DisplayDonorList_jsp._jspx_meth _c_005fforEach_005f0(DisplayDonorList_jsp.java:121 ) org.apache.jsp.jsp.DisplayDonorList_jsp._jspServic e(DisplayDonorList_jsp.java:83) org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet .java:717) org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:369) org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:322) org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:249) javax.servlet.http.HttpServlet.service(HttpServlet .java:717) org.apache.struts.action.RequestProcessor.doForwar d(RequestProcessor.java:1063) org.apache.struts.action.RequestProcessor.processF orwardConfig(RequestProcessor.java:386) org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:229) org.apache.struts.action.ActionServlet.process(Act ionServlet.java:1194) org.apache.struts.action.ActionServlet.doGet(Actio nServlet.java:414) javax.servlet.http.HttpServlet.service(HttpServlet .java:617) javax.servlet.http.HttpServlet.service(HttpServlet .java:717) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doF ilter(ReplyHeaderFilter.java:96) javax.el.PropertyNotFoundException:在java.lang.String类型上找不到属性“key” javax.el.BeanELResolver$BeanProperties.get(BeanELR-esolver.java:193) javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:170) javax.el.BeanELResolver.property(BeanELResolver.java:279) javax.el.BeanELResolver.getValue(BeanELResolver.jaVA:60) getValue(CompositeELR-esolver.java:54) org.apache.el.parser.AstValue.getValue(AstValue.ja-va:118) org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) org.apache.jasper.runtime.PageContextImpl.propriet aryEvaluate(PageContextImpl.java:925) DisplayDonorList\u jsp.\u jspx\u meth\u c\u 005fforEach\u 005f0(DisplayDonorList\u jsp.java:121) DisplayDonorList\u jsp.\u jspservice e(DisplayDonorList\u jsp.java:83) org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:70) javaservlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:322) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249) javaservlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.struts.action.RequestProcessor.doforward(RequestProcessor.java:1063) org.apache.struts.action.RequestProcessor.processF orwardConfig(RequestProcessor.java:386) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229) org.apache.struts.action.ActionServlet.process(Act-ionServlet.java:1194) org.apache.struts.action.ActionServlet.doGet(actionnservlet.java:414) javaservlet.http.HttpServlet.service(HttpServlet.java:617) javaservlet.http.HttpServlet.service(HttpServlet.java:717) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doF ilter(ReplyHeaderFilter.java:96)
我犯了什么错误?

异常基本上是告诉
var
属性中保存的对象等于
java.lang.String
。所以它看起来像
${donorMap}
实际上是一个
列表
或者可能是一个
字符串[]
。另外,方法
getDonorList()
表明它实际上返回的是一个
列表
,而不是
哈希映射

我不确定问题的根本原因,也许你没有运行你认为正在运行的代码,但是下面

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<%@ taglib uri="/WEB-INF/c.tld" prefix="c"%>
另见:

这就是说,这种提取taglib文件的错误做法通常在roseindia.com的Struts/JSTL教程中公开。确保你没有跟随他们。即使没有,只要记住这个网站,当你不小心降落到这个网站时,立即点击
Ctrl+W

另见:

非常感谢您。在我重新声明taglibs之后,它工作得很好。