在表达式语言中调用方法

时间:2012-06-30 11:14:37

标签: jsp tomcat el

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

例如:

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

此处,itemjava.lang.String类型的对象。这会在Tomcat上运行时导致错误。

2 个答案:

答案 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.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