Struts2:更新Map中“List Of Objects”的值

有一个对象ObjectA有一个列表ObjectB。TreeMap里面有一个ObjectB。它TreeMap有一个String关键字和List另一个对象ObjectC作为值。这个TreeMap和list内部已经显示在jsp使用s:iterator和s:textfield,它正在正确显示。即s:textfield中的“值”是正确的。现在,修改文本字段时出现问题。我们如何捕获动作类中ObjectC内的修改值?使用此处给出的代码,键(“Key1”)出现在操作中,但值为null。


Java代码


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代码


<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呈现:  <input type="text" id="review-act1_objA_objB_0__allPlainFields_'Key1'__6__attr112" value="Correct Value" name="objA.objB[0].allPlainFields['Key1'][0].attr112">


eclipse的“VAriables”视图中的对象结构显示:


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    

****在Eclipse“Variables”视图中,allPlainFields的值为**:** {Key1 =}

繁华开满天机
浏览 555回答 3
3回答

翻翻过去那场雪

根据您的最新更新。如果您使用的是TreeMapStruts2,则无法正确确定其中的元素类型。变更申报testTreeMap从TreeMap到Map。private Map<String,ObjectCList> testTreeMap = new TreeMap<String,ObjectCList>();或者使用注释testTreeMap进行com.opensymphony.xwork2.util.Element注释以告诉Struts2地图中的元素是什么类型。@Element(value = ObjectCList.class)private TreeMap<String,ObjectCList> testTreeMap = new TreeMap<String,ObjectCList>();

慕森卡

我已经根据你的第一个响应添加了一个额外的层,我想,它应该没关系(?)以下是我在Map级别使用2个不同映射得到的2个不同错误:Scenario1:意外的异常捕获设置'rqPGPrmMdl.rqGrp[1].pFWrap.allPFields['DefaultHeader'].paramMdlList[7].pValue'在'class&nbsp;com.hm.action.Act1:错误设置表达'rqPGPrmMdl.rqGrp[1].pFWrap.allPFields['DefaultHeader'].paramMdlList[7].pValue' with value '[Ljava.lang.String;@3b9b2222'&nbsp;ognl.NoSuchPropertyException: java.lang.String.paramMdlList
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java