3 回答

TA贡献1963条经验 获得超6个赞
如果您要针对并运行带有web.xml声明的遵循Servlet 3.0 的Servlet 3.0兼容容器(例如Tomcat 7,Glassfish 3,JBoss AS 6等),则只能在EL中调用带有参数的方法。此Servlet版本随EL 2.2一起提供,它允许调用带有参数的任意实例方法。
假设您${bean}在范围内引用了一个类的实例,该实例具有类似的方法public Object[] getArray(String key),那么您应该能够做到这一点:
<c:forEach items="${bean.getArray('foo')}" var="item">
${item} <br />
</c:forEach>
甚至使用另一个变量作为参数
<c:forEach items="${bean.getArray(foo)}" var="item">
${item} <br />
</c:forEach>
但是,如果您不以Servlet 3.0容器为目标,则根本无法在EL中调用带有参数的方法。最好的选择是按照Duffymo的建议在预处理Servlet中完成这项工作。
Object[] array = bean.getArray("foo");
request.setAttribute("array", array);
// ...
作为完全不同的替代方法,您可以创建一个委托函数调用的EL函数。您可以在此博客底部附近找到启动示例。您想要的最终结果如下:
<c:forEach items="${util:getArray(bean, 'foo')}" var="item">
${item} <br />
</c:forEach>
与
public static Object[] getArray(Bean bean, String key) {
return bean.getArray(key);
}

TA贡献1802条经验 获得超5个赞
上述解决方案对我没有用。getRemitanceProfileInformation(user)我的java类中有一个函数 。我创建了java类的usebean,然后调用了
<c:set var="paymentValueCode" value='remittanceaddr.getRemitanceProfileInformation("${user}")'/>
而且有效。

TA贡献1810条经验 获得超4个赞
给JSP对具有该方法的类的实例的引用,然后调用它。
您可能会问谁给了JSP那个实例-它是Model-2 MVC安排中的一个servlet。
这是流程的工作方式:
从JSP向Servlet提交GET / POST请求。
Servlet响应该请求,并代表JSP进行一些工作。将所有必要的对象放入请求,会话或其他适当的范围。
Servlet将响应路由到下一个JSP,这可能与发出请求的JSP相同。
冲洗,重复。
添加回答
举报