JSTL/ELを使用してJSPからJavaクラスで定義されている引数を使用してJavaメソッドを呼び出す方法。メソッドは配列を返しています。任意の戻り値を使用できます。
_web.xml
_がServlet 3.0に準拠していると宣言されたServlet 3.0互換のコンテナー(Tomcat 7、Glassfish 3、JBoss AS 6など)をターゲットにして実行している場合にのみ、ELの引数を持つメソッドを呼び出すことができます。このサーブレットバージョンにはEL 2.2が付属しており、引数を使用して任意のインスタンスメソッドを呼び出すことができます。
public Object[] getArray(String key)
のようなメソッドを持つクラスのインスタンスを参照するスコープ内に_${bean}
_があると仮定すると、これを行うことができるはずです:
_<c:forEach items="${bean.getArray('foo')}" var="item">
${item} <br />
</c:forEach>
_
または別の変数を引数として
_<c:forEach items="${bean.getArray(foo)}" var="item">
${item} <br />
</c:forEach>
_
ただし、Servlet 3.0コンテナをターゲットにしない場合、ELの引数を使用してメソッドを呼び出すことはできません。あなたの最善の策は、Duffymoが提案するように、前処理サーブレットでジョブを実行することです。
_Object[] array = bean.getArray("foo");
request.setAttribute("array", array);
// ...
_
まったく別の方法として、メソッド呼び出しを委任するEL関数を作成できます。キックオフの例は、 このブログ の下部近くにあります。あなたは次のようなものになりたいと思います:
_<c:forEach items="${util:getArray(bean, 'foo')}" var="item">
${item} <br />
</c:forEach>
_
と
_public static Object[] getArray(Bean bean, String key) {
return bean.getArray(key);
}
_
上記の解決策はうまくいきませんでした。 Java class。に関数getRemitanceProfileInformation(user)
がありました。Java classのusebean
<c:set var="paymentValueCode" value='remittanceaddr.getRemitanceProfileInformation("${user}")'/>
そしてそれは働いた。
JSPに、メソッドを持つクラスのインスタンスへの参照を与え、呼び出します。
おそらく、JSPに誰がそのインスタンスを提供するかを尋ねているのでしょう。これは、モデル2 MVC配置のサーブレットです。
フローの仕組みは次のとおりです。
JSFを使用している場合、BeanをView Scopeのモデルとして使用し、データソースから自動的にロードできます。また、JSPを使用している場合、TLDタグを使用してはどうでしょうか。そして、JSTLタグを使用して<c:foreach>
?セッションでの保存からメモリを保存しますか、またはセッションで保存して、ロードイベントが完了したらメモリを削除しますか?このような方法(JSTL + TLD)
<c:forEach items="${myTag:getProductByPage(page)}" var="p">
Product name: ${p.productName}
</c:forEach>