如何使用JSTL/EL从JSP调用参数化方法
如何使用JSTL/EL从JSP调用Java类中定义的带有参数的Java方法。该方法正在返回数组。可以使用任何返回值。为JSP提供对具有该方法的类的实例的引用,并调用它 您可能会问是谁给了JSP这个实例——它是model-2 MVC安排中的一个servlet 以下是流程的工作方式:如何使用JSTL/EL从JSP调用参数化方法,jsp,jstl,parameter-passing,el,methodexpression,Jsp,Jstl,Parameter Passing,El,Methodexpression,如何使用JSTL/EL从JSP调用Java类中定义的带有参数的Java方法。该方法正在返回数组。可以使用任何返回值。为JSP提供对具有该方法的类的实例的引用,并调用它 您可能会问是谁给了JSP这个实例——它是model-2 MVC安排中的一个servlet 以下是流程的工作方式: 从JSP向servlet提交GET/POST请求 Servlet根据该请求进行操作,并代表JSP进行一些工作。将所有必要的对象放入请求、会话或其他适当的范围 Servlet将响应路由到下一个JSP,该JSP可能与请求J
如果您使用的是JSF,那么可以使用bean作为视图范围中的模型,并从数据源自动加载。如果您使用的是JSP,那么使用TLD标记如何?使用JSTL标记
?是在会话中保存内存,还是在会话中保存并在加载事件完成时删除内存?有些是这样的(JSTL+TLD)
产品名称:${p.productName}
如果您的目标是并运行与Servlet 3.0兼容的容器(例如Tomcat 7、Glassfish 3、JBoss AS 6等),并且声明符合Servlet 3.0,则只能调用EL中带有参数的方法。这个servlet版本与EL 2.2一起提供,它允许使用参数调用任意实例方法
假设在引用类实例的作用域中有一个${bean}
,该类具有类似公共对象[]getArray(字符串键)
的方法,那么您应该能够执行以下操作:
${item}
或者甚至使用另一个变量作为参数
${item}
但是,如果您不以Servlet3.0容器为目标,那么您根本无法调用EL中带有参数的方法。最好的办法是按照Duffymo的建议在预处理servlet中完成这项工作
Object[] array = bean.getArray("foo");
request.setAttribute("array", array);
// ...
作为一个完全不同的替代方案,您可以创建一个EL函数来委托方法调用。您可以在本文档底部附近找到一个启动示例。您希望以如下方式结束:
${item}
与
publicstaticobject[]getArray(Bean,字符串键){
返回bean.getArray(key);
}
上述解决方案对我不起作用。
在我的java类中有一个函数getTransmissionProfileInformation(user)
。
我创建了一个java类的usebean,然后调用
<c:set var="paymentValueCode" value='remittanceaddr.getRemitanceProfileInformation("${user}")'/>
它成功了。我使用的是struts tiles。请你解释一下,我们需要调用一个接受参数的metod,这里是JSP中设置的所有值。错误的引用,谁知道你回答时上面的解决方案是什么。我正在做与请求对象类似的事情,调用
isUserInRole('role')
但eclipse认为这是一个get方法,并抱怨该方法getIsUserInRole()
不存在。你知道如何修复吗?我正在使用glassfish v3。谢谢,D.@Daniel:Eclipse在EL语法检查和验证方面很弱。只需在Eclipse中禁用EL验证,或者安装JBoss工具。刚刚注意到JSP/Servlet的隐藏功能链接已被删除=\@Luiggi:我的博客中有一个副本,我修复了link、 谢谢!它将如何与模型属性一起作为参数使用?我对JSTL非常陌生,并尝试做类似的事情。谢谢!
<c:set var="paymentValueCode" value='remittanceaddr.getRemitanceProfileInformation("${user}")'/>