1

HTML フィールド要素のセットを再利用し、Struts で変数から「name」属性を作成したいと考えています。私はこのHow To Generate unique HTML id attributes within Struts 2 iterator tagを見て、似たようなものを使用できるが、それを機能させることができないと考えました。イテレータ ループ内でのみ struts 変数から name 属性を作成できるようです。代わりに単純な変数を使用してこれを行うにはどうすればよいですか?

これが私のコードです。最初は変数を使用しようとし、2番目は iterator を使用しています:

<s:set var="type" value="Main" />
<s:textfield name="prefix%{#type}.Name"/>

<s:set var="AList" value="{'Main'}" />
<s:iterator value="AList" var="Ltype">
    <s:textfield name="prefix%{#Ltype}.Name"/>
</s:iterator>

これにより、2 つの要素が生成されます。

<input type="text" name="prefix.Name"     value="">
<input type="text" name="prefixMain.Name" value="">

最初は変数を置換せず、反復子ループが機能します。

うまくいかないのはなぜですか?

4

1 に答える 1

3

String リテラルではなく、最初の変数にを割り当てています。ValueStack で呼び出されるオブジェクトがないため、空の Stringを変数に割り当てています。Maintype

<s:set var="type" value="Main" />

2番目の例で(ほとんど)素晴らしいことをしている間:

<s:set var="AList" value="{'Main'}" />

使うだけ

<s:set var="AList" value="%{'Main'}" />

また

<s:set var="AList" value="'Main'" />

どこでも、それは動作します。

{}OGNL では特別な意味 (リスト射影、リスト選択など) があるため、単独では役に立たず危険です。

于 2015-06-04T16:15:39.270 に答える