如何使用JSTL / EL从JSP调用参数化方法

如何使用JSTL / EL从JSP调用带有在Java类中定义的参数的Java方法。该方法返回数组。可以使用任何返回值。



Smart猫小萌
浏览 639回答 3
3回答

神不在的星期二

如果您要针对并运行带有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">&nbsp; &nbsp; ${item} <br /></c:forEach>甚至使用另一个变量作为参数<c:forEach items="${bean.getArray(foo)}" var="item">&nbsp; &nbsp; ${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">&nbsp; &nbsp; ${item} <br /></c:forEach>与public static Object[] getArray(Bean bean, String key) {&nbsp; &nbsp; return bean.getArray(key);}

慕后森

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

蝴蝶不菲

给JSP对具有该方法的类的实例的引用,然后调用它。您可能会问谁给了JSP那个实例-它是Model-2 MVC安排中的一个servlet。这是流程的工作方式:从JSP向Servlet提交GET / POST请求。Servlet响应该请求,并代表JSP进行一些工作。将所有必要的对象放入请求,会话或其他适当的范围。Servlet将响应路由到下一个JSP,这可能与发出请求的JSP相同。冲洗,重复。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript