首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

各位大神们,为什么EL表达式不能当函数的参数?解决方法

2012-04-18 
各位大神们,为什么EL表达式不能当函数的参数?c:forEach items${result} vargbtr aligncenter

各位大神们,为什么EL表达式不能当函数的参数?
<c:forEach items="${result}" var="gb">
  
  <tr align="center" class="font1">
  <td class="font1">${gb.goodId }</td>
  <td class="font1">${gb.goodName }</td>
  <td class="font1">${gb.goodPrice }</td>
  <td class="font1"><table width="100%" border="1">
  <tr align="center" class="font1">
  <% %>
  <td width="9%"><input type="text" name="num" value=<%=ms.getGoodsNum(gb.goodId) %>size="18"><input type="hidden" name="goodsId" value="${gb.goodId }"></td>
  <td width="9%"><a href="HandleShoppping?type=delGoods&goodsID=${gb.goodId}">删除</a></td>
  <td width="9%"><a href="HandleShow?id=${gb.goodId }">查看</a></td>
  </tr>
  </table></td>
  </tr>
  </c:forEach>
当然了,result是一个ArrayList 的对象,其他地方都没问题,但传递参数 value=<%=ms.getGoodsNum(gb.goodId) %>时,报错就是:
gb.goodId cannot be resolved to a type
我尝试着加了""但报的是同样的错。还有,怎么在EL表达式里 添加函数,我添加了,但必要要前缀。。。。囧死了,希望大神们帮忙,小弟是新手!!!

[解决办法]
c:forEach 
如果会的话,可以去看看它的源代码,看看这个var="gb"是存在在什么范围内(pageContext,request,session,application)


在你的代码可以先测试一下.

<c:forEach items="${result}" var="gb">

<%System.out.println(pageConext.getAttribute("gb");%>
<%System.out.println(request.getAttribute("gb");%>
<%System.out.println(session.getAttribute("gb");%>

<tr align="center" class="font1">
<td class="font1">${gb.goodId }</td>
<td class="font1">${gb.goodName }</td>
<td class="font1">${gb.goodPrice }</td>
<td class="font1"><table width="100%" border="1">
<tr align="center" class="font1">
<% %>
<td width="9%"><input type="text" name="num" value=<%=ms.getGoodsNum(gb.goodId) %>size="18"><input type="hidden" name="goodsId" value="${gb.goodId }"></td>
<td width="9%"><a href="HandleShoppping?type=delGoods&goodsID=${gb.goodId}">删除</a></td>
<td width="9%"><a href="HandleShow?id=${gb.goodId }">查看</a></td>
</tr>
</table></td>
</tr>
</c:forEach>

看看哪个输出不是null的,你就可以使用它了.

value=<%=ms.getGoodsNum(((类型)范围对象.getAttribute("gb")).getGoodId()) %>
[解决办法]
<%=ms.getGoodsNum(gb.goodId) %>
 gb.goodId这个时候是什么东西都不知道,编译的时候当然就通不过了,el表达式在编译阶段根本不校验,校验的是java代码

热点排行