如何使用EL(Expression Language)在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上运行时导致错误。
答案 0 :(得分:15)
这仅在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中都可以正常工作。
答案 1 :(得分:0)
我无法让它工作(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