Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JSTL/EL从JSP调用参数化方法_Jsp_Jstl_Parameter Passing_El_Methodexpression - Fatal编程技术网

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

如何使用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

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

为JSP提供对具有该方法的类的实例的引用,并调用它

您可能会问是谁给了JSP这个实例——它是model-2 MVC安排中的一个servlet

以下是流程的工作方式:

  • 从JSP向servlet提交GET/POST请求
  • Servlet根据该请求进行操作,并代表JSP进行一些工作。将所有必要的对象放入请求、会话或其他适当的范围
  • Servlet将响应路由到下一个JSP,该JSP可能与请求JSP相同
  • 冲洗,重复

  • 如果您使用的是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}")'/>