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