在表达式语言调用方法(Call methods in Expression Language)

2019-06-25 22:46发布

我怎样才能调用使用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运行时,这会导致错误。

Answer 1:

这不仅是因为EL 2.2的支持。 这又反过来携手从Servlet 3.0。 所以,如果你确保你的目标一个Servlet 3.0一个Servlet 3.0兼容兼容容器(Tomcat的7,Glassfish的3等) web.xml声明,那么它只会工作,你想要的方式。 如果你然而针对较旧版本的servlet容器,或有一个旧的版本,甚至是错误web.xml根声明,那么它将无法工作。

也可以看看:

  • 我们的EL wiki页面

更新:您的特定问题可能出在Tomcat中7.没有找到基于给定的参数正确的重载方法的错误引起的。 你表达工作正常的Glassfish 3.所有非重载的方法应该工作在Tomcat中就好了。



Answer 2:

我无法得到它的工作是(的Apache Tomcat / 7.0.27)。

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

萨尔瓦多拒绝看到正确签名的方法。 同样的事情发生的的indexOf( “H”,0)。 我也有成功

${x.contains("h")}
${x.lastIndexOf("h")}
${x.indexOf(104)}  Ascii value of 'h' is 104


文章来源: Call methods in Expression Language
标签: jsp tomcat el