Jsp 表达式语言中的调用方法

Jsp 表达式语言中的调用方法,jsp,tomcat,el,Jsp,Tomcat,El,如何使用EL()在JSP中调用方法 例如: <c:forEach var="item" items="${listStr}" begin="0" end="2" step="2"> <p>${item.indexOf("h")}</p> </c:forEach> ${item.indexOf(“h”)} 这里,项是类型为java.lang.String的对象。在Tomcat上运行时,这会导致错误。这仅在EL 2.2之后才受支持。这反过

如何使用EL()在JSP中调用方法

例如:

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

${item.indexOf(“h”)}


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

这仅在EL 2.2之后才受支持。这反过来又与Servlet3.0密切相关。因此,如果您确保将Servlet 3.0兼容的容器(Tomcat 7、Glassfish 3等)与Servlet 3.0兼容的
web.xml
声明作为目标,那么它将按照您的意愿工作。但是,如果您的目标是一个版本较旧的servlet容器,或者有一个版本较旧的servlet容器,或者甚至是错误的
web.xml
root声明,那么它将不起作用

另见:


更新:您的特定问题可能是由Tomcat 7中的错误引起的。它找不到基于给定参数的正确重载方法。你的表情在Glassfish 3中表现得很好。所有非重载方法在Tomcat中都应该可以正常工作。

我也不能让它工作(ApacheTomcat/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

您得到的错误是什么?我使用Tomcat7,Servlet3.0,但是一些方法可以工作,另一个不行。例如:indexOf(104)是可以的,但indexOf(“h”)不是。(“h”ascii是104)。这是Tomcat 7中的一个错误,我可以从哪个版本调用没有参数的not get方法?@PhilipRego:Ctrl+F打开链接中的“findAttribute”。你会看到它只是在超类中。是的,一些方法是可以的。另一个不是。你试过发送“h”(字符)吗?字符可以转换为int。