gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:38:18 24 4
gpt4 key购买 nike

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

最佳答案

如果您的目标和运行至少一个 Servlet 3.0 兼容容器(例如 Tomcat 7 或更高版本、WildFly 8 或更高版本、GlassFish 3 或更高版本、等)与 web.xml声明至少符合Servlet 3.0。此 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);
// ...

作为完全不同的替代方案,您可以创建一个委托(delegate)方法调用的 EL 函数。您可以找到一个启动示例作为此答案的选项 2 How to call a static method in JSP/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);
}

web.xml文件绝对不应该有 <!DOCTYPE>行放在顶部,否则仍然会强制使用 Servlet 2.3 方式。您可以找到正确的示例 web.xml本答案后半部分的声明How to install JSTL? The absolute uri: http://java.sun.com/jstl/core cannot be resolved .

关于jsp - 如何使用 JSTL/EL 从 JSP 调用参数化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7121303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com