如何使用 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 上运行时导致错误。
仅自 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 中都应该运行良好。
我也无法让它工作(Apache Tomcat/7.0.27)。
javax.el.ELException:无法将类型类 java.lang.String 的 h 转换为 int
El 拒绝查看具有正确签名的方法。indexOf("h",0) 也会发生同样的事情。我确实成功了
${x.contains("h")}
${x.lastIndexOf("h")}
${x.indexOf(104)} Ascii value of 'h' is 104