8

EL ( Expression Language )を使用して JSP でメソッドを呼び出すにはどうすればよいですか?

例えば:

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

ここで、itemは type のオブジェクトですjava.lang.String。これにより、Tomcat で実行するとエラーが発生します。

4

2 に答える 2

17

これは、EL 2.2 以降でのみサポートされています。これは、Servlet 3.0 と密接に関連しています。したがって、サーブレット 3.0 互換のweb.xml宣言を使用して、サーブレット 3.0 互換のコンテナー (Tomcat 7、Glassfish 3 など) をターゲットにしていることを確認すると、意図したとおりに機能します。ただし、古いバージョンのサーブレット コンテナーをターゲットにしている場合、または古いバージョンのサーブレット コンテナーを使用している場合や、web.xmlルート宣言が間違っている場合は、機能しません。

以下も参照してください。


更新:特定の問題は、Tomcat 7 のバグが原因である可能性があります。指定された引数に基づいて、適切なオーバーロードされたメソッドが見つかりません。この式は Glassfish 3 で正常に動作します。オーバーロードされていないメソッドはすべて、Tomcat で正常に動作するはずです。

于 2012-06-30T11:43:53.740 に答える
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
于 2012-06-30T15:21:04.800 に答える