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

jsp调用后台Java程序,怎么把el表达式做为参数传递
java后台取到一个map值,传给jsp,并显示:如下:

 <c:forEach items="${funTreeMap}" var="funTrees"> 
      ${funTrees.key}
  </c:forEach>

显示一切正常。
但是我想在显示的时候再调用后台Java代码,做一个转换,如下:
<%@page import="com.hash.login.bean.ManagerBean"%>
...........
<c:forEach items="${funTreeMap}" var="funTrees"> 
      <%= new ManagerBean().getFunNameById(${funTrees.key})
  </c:forEach>

将<c:forEach中每次取到的值(EL表达式)作为参数,调用后台java代码,进行一个计算,
将计算的结果再显示的界面上,结果报错:
An error occurred at line: 17 in the jsp file: /WEB-INF/jsp/tree.jsp
 $ cannot be resolved

<%=  中调用后台进行计算的时候,不认识EL表达式:${funTrees.key}

谁知道应该怎么调用才可以~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

------解决方案--------------------
定义自定义标签,或者使用jsp:useBean标签
------解决方案--------------------
pageContext.getAttribute("funTrees")
这样应该可以吧

<td><%=FileExtension.format(((对象)pageContext.getAttribute("funTrees")).方法())%></td>

------解决方案--------------------
el表达式${xxx.name}只是调用了get()方法而已,你可以试着对get()方法进行重写呀,加上你对字符串处理的逻辑不就行了吗?也没看到程序,不知道是不是你想要的
------解决方案--------------------
这种不好办咯,我的做法是把EL改成JAVA内嵌代码
<c:forEach>改成
<%for()%>代码形式
------解决方案--------------------
有一个办法,就是在jsp页面里,用<%..%>输写代码,在里面用for循环处理。这样就可以传参了。。。
------解决方案--------------------
引用:
Java code?1pageContext.getAttribute("funTrees")这样应该可以吧

<td><%=FileExtension.format(((对象)pageContext.getAttribute("funTrees")).方法())%></td>


可以用EL 表达式 就可以 用 作用域取。