【急急急!!】EL表达式支持泛型吗??

WingBin 2010-08-24 06:01:06
现在正在做一个运动会管理系统,表现层用的EL表达式,现在发现了个问题:EL表达式似乎不支持泛型,具体问题如下:
控制层传回的数据格式是:

//获取运动项目
int id = Integer.parseInt(request.getParameter("sportsItemId"));
SportsItem sportsItem = this.getMatchService().getSportsItemDAO().findById(id);
//获取该项目的所有比赛信息
List<Match> matchs = this.getMatchService().getMatchDAO().getMatchsBySportsItem(sportsItem);
//逐个按照Match获取该Match的报名信息
HashMap<String,List<MatchScores>> matchInfos = new HashMap<String,List<MatchScores>> ();
for(Match m: matchs){
String matchName = m.getMatchName();
List<MatchScores> scores = this.getMatchService().getMatchScoresDAO().getMatchScoresByMatch(m);
matchInfos.put(matchName, scores);
}
//传递运动项目信息
request.setAttribute("item", sportsItem);
//传递所有该项目报名信息
request.setAttribute("matchInfos", matchInfos);
//传递比赛场数
request.setAttribute("matchInfoSize",matchInfos.size());

JSP页面表现层代码如下:

<body>
${item.itemName }项目共有比赛${matchInfoSize }场,分组情况如下:
<hr/>
<c:forEach items="${matchInfos}" var="matchInfo">
<table width="98%" border="0" cellpadding="2" cellspacing="1"
bgcolor="#D1DDAA" align="center" style="margin-top: 8px">
<tr bgcolor="#E7E7E7">
<td colspan="5">${matchInfo.key}</td>
</tr>
<tr align="center" bgcolor="#FAFAF1" height="22">
<td>运动员编号</td>
<td>运动员姓名</td>
<td>所在单位</td>
<td>跑道</td>
<td>状态</td>
</tr>
<c:forEach items="${matchInfo.value}" var="matchScore">
<tr align='center' bgcolor="#FFFFFF"
onMouseMove="javascript:this.bgColor='#FCFDEE';"
onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22">
<td>${matchSocre.sportsMan.sportsNumber}</td>
<td>${matchSocre.sportsMan.sportsmanName}</td>
<td>${matchSocre.sportsMan.college.collegeName}</td>
<td>${matchSocre.runwayCode}</td>
<td>
<c:if test="${matchScore.state==0}">未检录</c:if>
<c:if test="${matchScore.state==1}">已检录未比赛</c:if>
<c:if test="${matchScore.state==2}">已完成比赛</c:if>
</td>
</tr>
</c:forEach>
</table>
</c:forEach>
</body>

发现:
td>${matchSocre.sportsMan.sportsNumber}</td>
<td>${matchSocre.sportsMan.sportsmanName}</td>
<td>${matchSocre.sportsMan.college.collegeName}</td>
<td>${matchSocre.runwayCode}</td>
<td>
<c:if test="${matchScore.state==0}">未检录</c:if>
<c:if test="${matchScore.state==1}">已检录未比赛</c:if>
<c:if test="${matchScore.state==2}">已完成比赛</c:if>
</td>
里面的:${matchSocre.sportsMan.sportsmanName}往下都是空白,但生成表格的数量及表格内的行数都是正确的,就是取不到类似${matchSocre.sportsMan.sportsmanName}和${matchScore.state==0}的值,什么原因呢???
注:这些数据在Action中进行简单测试,都能取出来,测试如下:

//遍历HashMap
String mn = null;
for(Iterator<String> it = matchInfos.keySet().iterator();it.hasNext();){
System.out.println("----------------------------------------------");
mn = it.next();
System.out.println("比赛名称:"+mn);
System.out.println("*************************************");
for(MatchScores m: matchInfos.get(mn)){
System.out.println(m.getSportsMan().getSportsNumber());
System.out.println(m.getSportsMan().getSportsmanName());
System.out.println(m.getRunwayCode());
}
System.out.println("*************************************");
System.out.println("----------------------------------------------");
}
...全文
102 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sumwers 2010-08-24
  • 打赏
  • 举报
回复
从未在实际项目中用过Java泛型的小虾飘过。。。
xtawgipl 2010-08-24
  • 打赏
  • 举报
回复
是数据本来就为空吧?
泛型只是在编译才起作用的,用EL表达式应该是没问题的~~
Sharesin 2010-08-24
  • 打赏
  • 举报
回复
你的el表达式中<forEach 中的items属性,貌似没有matchInfo.value放到request中的应该是matchInfos吧
jiang521725 2010-08-24
  • 打赏
  • 举报
回复
转一下吧
优秀APP开发 2010-08-24
  • 打赏
  • 举报
回复
LZ的问题很好玩。EL表达式本质上是根据实体的getXXX来取的,你说它支持不?
yibo2010 2010-08-24
  • 打赏
  • 举报
回复
好像支持 没用过
xiangge55 2010-08-24
  • 打赏
  • 举报
回复
可以转换一下类型,页面不支持泛型

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧