8

如何使用 EL(表达式语言)在 JSP 中调用方法?

例如:

<c:forEach var="item" items="${listStr}" begin="0" end="2" step="2">
    <p>${item.indexOf("h")}</p>
</c:forEach>

在这里,item是一个类型的对象java.lang.String。这会在 Tomcat 上运行时导致错误。

4

2 回答 2

17

仅自 EL 2.2 起才支持此功能。这又与 Servlet 3.0 密切相关。因此,如果您确保使用 Servlet 3.0 兼容web.xml声明来定位与 Servlet 3.0 兼容的容器(Tomcat 7、Glassfish 3 等),那么它将按照您的预期工作。但是,如果您的目标是旧版本的 servlet 容器,或者有旧版本的甚至是错误的web.xml根声明,那么它将无法工作。

也可以看看:


更新:您的特定问题可能是由 Tomcat 7 中的错误引起的。它没有根据给定的参数找到正确的重载方法。您的表达式在 Glassfish 3 中运行良好。所有非重载方法在 Tomcat 中都应该运行良好。

于 2012-06-30T11:43:53.740 回答
0

我也无法让它工作(Apache Tomcat/7.0.27)。

javax.el.E​​LException:无法将类型类 java.lang.String 的 h 转换为 int

El 拒绝查看具有正确签名的方法。indexOf("h",0) 也会发生同样的事情。我确实成功了

${x.contains("h")}
${x.lastIndexOf("h")}
${x.indexOf(104)}  Ascii value of 'h' is 104
于 2012-06-30T15:21:04.800 回答