日期:2014-05-17  浏览次数:20754 次

各位大神们,为什么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代码