1

パート 1: 別のオブジェクト (ObjectB) を持つオブジェクト (ObjectA) があります。オブジェクト B 内に Hashmap があります。このハッシュマップには、キーとして文字列があり、値として別のオブジェクト「ObjectC」があります。このハッシュマップは、s:iterator と s:textfield を使用して jsp に表示され、正しく表示されています。つまり、s:textfield 内の「値」は正しいのですが、「名前」は正しくありません。ここで、テキストフィールドが変更されたときに問題が発生します。アクション クラスの ObjectC 内で変更された値を取得するにはどうすればよいでしょうか。

public class ObjectA implements Serializable {
    private Integer attr1;
    private List<ObjectB> objB;
    //...getters and setters....
public class ObjectB implements Serializable {
private Integer attr11;
private Map<String,ObjectC> myMap;
    // ...getters and setters....
public class ObjectC implements Serializable {
private Integer attr111;
public String attr112;
    // ...getters and setters....

jsp コード:

<s:iterator value="#objB.myMap" var="fieldMap" status="fieldStatus">

<li><label><s:property value="#fieldMap.key"/></label><span>
<s:textfield name="<NOT SURE>" value="%{#fieldMap.value.attr12}"  /></span></li>



</s:iterator> 
4

1 に答える 1

0

あなたの場合、objBは を含む でListあり、 のすべての要素に対してHashMap1 つです。HashMapList

objA
  |--- objB[0]
    |-- objC[A]
    |-- objC[B]
    |-- objC[C]
  |--- objB[1]
    |-- objC[X]
    |-- objC[Y]
    |-- objC[Z]
  |--- objB[n]
    |-- objC[N1]
    |-- objC[N2]
    |-- objC[N3]

次に、属性OGNLを持つ単一の要素を参照するには、2 つの反復子と次の表記法が必要です。name

<s:iterator value="objA.objB" var="listRow" status="listStatus">
<!-- Iterating the List -->
    <s:iterator value="#listRow.myMap" var="mapRow" >
    <!-- Iterating the Map -->
        <li>
            <label>
                <s:property value="#mapRow.key"/>
            </label>
            <span>
                <s:textfield value="%{#mapRow.value.attr12}"  
                  name="objA.objB[#listStatus.index].myMap[#mapRow.key].attr112"
                />
            </span>
        </li>
    </s:iterator> 
</s:iterator> 
于 2013-02-19T15:33:19.590 に答える