Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更新映射中自定义对象的值,例如包含对象B列表的对象a_Java_Struts2 - Fatal编程技术网

Java 更新映射中自定义对象的值,例如包含对象B列表的对象a

Java 更新映射中自定义对象的值,例如包含对象B列表的对象a,java,struts2,Java,Struts2,我遵循以下链接:我的问题也类似,但无法解决它。 我有一个Integer和ObjA的映射,这是一个只包含列表的自定义对象 } JSP代码段: 正确显示值这一事实并不意味着什么,因为即使值属性是正确的,名称属性也将用于发送项目,它们是不相关的 顺便说一句,在编辑之后,问题就清楚了:您使用的是两个私有内部类 请为ObjA和ObjB使用一个公共类,它会工作的 编辑: 唯一的问题是,当我提交表单时,我没有在映射中获得值,因此没有附加struts xml映射 因为您没有附加struts映射,所以我看不

我遵循以下链接:我的问题也类似,但无法解决它。

我有一个Integer和ObjA的映射,这是一个只包含列表的自定义对象

}

JSP代码段:


正确显示值这一事实并不意味着什么,因为即使值属性是正确的,名称属性也将用于发送项目,它们是不相关的

顺便说一句,在编辑之后,问题就清楚了:您使用的是两个私有内部类

请为ObjA和ObjB使用一个公共类,它会工作的

编辑:

唯一的问题是,当我提交表单时,我没有在映射中获得值,因此没有附加struts xml映射


因为您没有附加struts映射,所以我看不出您的拦截器堆栈是否为该操作进行了良好的配置。然后自己做,确保有默认的拦截器堆栈,或者至少有参数sinterceptor。请记住,如果您添加自己的拦截器,您也需要添加堆栈,否则您将使用单个拦截器,而不是将其添加到其他拦截器。

您是否填充了jsp?如果使用约定插件,请向我们展示1您的struts.xml或注释映射,2目标操作3包含提交按钮的完整jsp表单+顺便说一句,这个问题很好,显示了你的努力。哦,还要确保ObjB有一个默认构造函数。操作方法的调用很好。此外,数据还显示在UI上。唯一的问题是,当我提交表单时,我没有在映射中获得值,因此没有附加struts xml映射。。映射正在提供空值。我编辑了代码并再次添加。如果还有什么需要补充的,请告诉我。谢谢你的帮助。我将内部类修改为public,但仍然存在相同的问题。
private Map<Integer, ObjA> displayMap = new HashMap<Integer, ObjA>();
public String displayColumn() throws Exception {

        for (int i = 0; i < numberOfDoors.length; i++) {
             int k = 1;
            List<ObjB> objBList = new ArrayList<ObjB>();
            while (k <= numberOfDoors[i]) {
                ObjB objB =new ObjB();
                objB.setSizeCd("1");
                objBList.add(objB);

                doorNoCounter = doorNoCounter + 1;
                k++;
            }

            ObjA objA = new ObjA();
            objA.setObjBList(objBList);
            displayMap.put(i+1, objA);
        }
        return SUCCESS;
    }
}


   private class ObjA{


private List<ObjB> objBList;

public List<ObjB> getObjBList() {
    return objBList;
}

public void setObjBList(List<ObjB> objBList) {
    this.objBList= objBList;
}
private class objB{
     protected String sizeCd;

        public String getSizeCd() {
        return sizeCd;
    }
    public void setSizeCd(String sizeCd) {
        this.sizeCd = sizeCd;
    }

}
    <table class="tableStyle">

     <tr>   

        <s:iterator status="outerStat" value="displayMap" var="parentMap">

        <tr>
                            <s:iterator status="innerStat" value="%{#parentMap.value.objBList}" var="listLocker">
            <td class="labelStaticText">Select Size Code:</td>

            <td > 
             <s:textfield name="displayMap['%{#parentMap.key}'].objBList[%{#innerStat.index}].sizeCd" value="%{sizeCd}"/>               
                        </td>
        </s:iterator>
        </tr>
            </s:iterator>
        </tr>