为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Smart猫小萌 2019-10-30 14:54:37
如何使用JSTL / EL从JSP调用带有在Java类中定义的参数的Java方法。该方法返回数组。可以使用任何返回值。
查看完整描述

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);

}


查看完整回答
反对 回复 2019-10-30
?
慕后森

TA贡献1802条经验 获得超5个赞

上述解决方案对我没有用。getRemitanceProfileInformation(user)我的java类中有一个函数 。我创建了java类的usebean,然后调用了


<c:set var="paymentValueCode" value='remittanceaddr.getRemitanceProfileInformation("${user}")'/>

而且有效。


查看完整回答
反对 回复 2019-10-30
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

给JSP对具有该方法的类的实例的引用,然后调用它。

您可能会问谁给了JSP那个实例-它是Model-2 MVC安排中的一个servlet。

这是流程的工作方式:

  1. 从JSP向Servlet提交GET / POST请求。

  2. Servlet响应该请求,并代表JSP进行一些工作。将所有必要的对象放入请求,会话或其他适当的范围。

  3. Servlet将响应路由到下一个JSP,这可能与发出请求的JSP相同。

  4. 冲洗,重复。


查看完整回答
反对 回复 2019-10-30
  • 3 回答
  • 0 关注
  • 638 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号