0

通常のBean式である属性を持ち、リストに名前を付けるカスタムJSPタグが必要です。次に、タグはリストを特定の形式でレンダリングします。

次のようなs:iteratorの属性を持つカスタムタグを作成しようとしました。

<%@ tag body-content="empty"%>
<%@ attribute name="list" required="true"  %>

<%@ taglib prefix="s" uri="/struts-tags"%>

<s:set var="varList" >${list}</s:set>
<s:iterator value="varList">(render item)</s:iterator>

別のJSPで、Bean式で使用しました。

<my:listtag list="myObject.aList"/>

「myObject.aList」を反復処理することを期待していましたが、残念ながらこれは機能しません。何が起こっているように見えるかというと、イテレータは「myObject.aList」ではなく「myObject」を反復しようとします。

何が起こっているのですか、どうすれば希望の動作を得ることができますか?

どうもありがとうございます!

4

1 に答える 1

0

では、行きましょう。Attribute は「Collection」型で定義する必要があり、イテレータ変数は「%{#attr.list}」で指定する必要があります。

<%@ attribute name="list" required="true" type="java.util.Collection" %>

<s:iterator value="%{#attr.list}">(render item)</s:iterator>

他の JSPでは、変数名ではなく、変数ので呼び出す必要があります。

<my:listtag list="${myObject.aList}"/>

わーい!

于 2013-03-25T18:55:54.030 に答える