Struts2: Aktualisieren der Werte einer "Liste von Objekten" in einer Karte

Es gibt ein ObjektObjectA die hat eine Liste vonObjectB. Da ist einTreeMap in derObjectB. DieseTreeMap hat einString als Schlüssel und aList eines anderen ObjektsObjectC als Wert. DieseTreeMap und daslist innen wurde auf dem angezeigtjsp Verwendung ders:iterator unds:textfield und es wird korrekt angezeigt. d.h. die "Werte" innerhalb des s: -Textfelds sind korrekt. Jetzt tritt das Problem auf, wenn das Textfeld geändert wird. Wie erfassen wir die geänderten Werte in ObjectC in der Aktionsklasse? Mit dem hier angegebenen Code kommt der Schlüssel ("Key1") in die Aktion, aber der Wert ist null.

Java-Code

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

JSP-Code

<s:iterator value="objA.objB" var="currentObjB" status="currentGroupStatus">

  <s:iterator value="#currentObjB.allPlainFields" var="parentMap" status="headerStatus">
     <s:iterator value="#parentMap.value" var="fieldList" status="fieldStatus">

       <s:textfield  name="objA.objB[%{#currentGroupStatus.index}].allPlainFields['%{#parentMap.key}'][%{#fieldStatus.index}].attr112"/>


</s:iterator>                       

 </s:iterator> 

HTML gerendert: <input type="text" id="review-act1_objA_objB_0__allPlainFields_'Key1'__6__attr112" value="Correct Value" name="objA.objB[0].allPlainFields['Key1'][0].attr112">

Die Objektstruktur in der Ansicht "VAriables" von Eclipse zeigt:

objA    Object A  (id=955)  
objB    ArrayList<E>  (id=966)  
    elementData Object[10]  (id=967)    
        [0] ObjectB  (id=968)   
            allPlainFields  TreeMap<K,V>  (id=972)  
                comparator  null    
                descendingMap   null    
                entrySet    TreeMap$EntrySet  (id=979)  
                keySet  null    
                modCount    1   
                navigableKeySet null    
                root    TreeMap$Entry<K,V>  (id=980)    
                size    1   
                values  null    

        [1] ObjectB  (id=969)   
        [2] ObjectB  (id=970)   
        [3] ObjectB  (id=971)   
        [4] null    
        [5] null    
        [6] null    
        [7] null    
        [8] null    
        [9] null    
    modCount    4   
    size    4   

**** In der Eclipse-Ansicht "Variablen" ist der Wert für allPlainFields **: ** {Key1 =}

BEARBEITEN (27.02.2013):

Versuchte dies aber hat nicht funktioniert. Die Werte erscheinen auf jsp, aber wenn sie übermittelt werden, werden sie nicht wirksam:

ImAction Klasse:

private TreeMap<String,ObjectCList> testTreeMap = new TreeMap<String,ObjectCList>();
//get,set and setting two keys in map "mykey1" and "mykey2"

ImObjectCList Klasse:

private ArrayList<ObjectC> paramMdlList;
 //default constructor, get, set

ImJSP:

<s:form id="test-map" method="post">
<s:iterator value="testTreeMap" var="pMap" status="hStatus">
     <li><label><s:property value="%{#pMap.key}" /></label> 
        <s:iterator value="%{#pMap.value.paramMdlList}" var="pList" status="innerStatus">
            <s:textfield name="testTreeMap['%{#pMap.key}'].paramMdlList[%{#innerStatus.index}].attr111"/>
            <s:textfield name="testTreeMap['%{#pMap.key}'].paramMdlList[%{#innerStatus.index}].attr112"/> 

        </s:iterator>


    </li>

</s:iterator>
<s:submit value=" " type='button' id="btnh1" action="saveTreeMap">
            <span>Save TreeMap</span>
</s:submit>
</s:form>

Wenn das Formular gesendet wird,updateTreeMap Methode deraction wird genannt. Die Karte wird wie erwähnt gedrucktHier :

public String updateTreeMap(){

    for (Map.Entry<String, ObjectCList> entry : testTreeMap.entrySet())
    {
        System.out.println(entry.getKey() + "/" + entry.getValue());
    }

    return SUCCESS;

}

Was ist "gedruckt": mykey1 / mykey2 / d.h.Nullwerte

Der folgende Bildschirm zeigt die Werte in jsp

Antworten auf die Frage(2)

Ihre Antwort auf die Frage