s:propery标签中根据key取map值的时候会自动加1,为什么?

今天要做一map的平行遍历,就是一个map(A)中存了另一个map(B)的key,然后就发现,在遍历后,存值的(B)莫其妙变大了,果断写了个小页面做了下测试代码如下:

  <tr>
        <td style="width:100px;">遍历前</td>
        <td style="width:100px;"><s:property value="markingStatistic.taskList.size()"/></td>
    </tr>
    <tr>
        <td style="width:100px;">遍历</td>
        <td style="width:100px;"><s:property value="markingStatistic.taskList['adfasd']"/></td>
    </tr>
    <tr>
        <td style="width:100px;">遍历后</td>
        <td style="width:100px;"><s:property value="markingStatistic.taskList.size()"/></td>
    </tr>

 这是java类:

public class MarkingStatistic {
    private List<String> examinationQuestionId = new ArrayList<String>();//试题ID列表
    private Map<String, MarkingStatisticPerson> taskList = new HashMap<String,MarkingStatisticPerson>();//每个人的详细情况
    
    
    public List<String> getExaminationQuestionId() {
        return examinationQuestionId;
    }
    public void setExaminationQuestionId(List<String> examinationQuestionId) {
        this.examinationQuestionId = examinationQuestionId;
    }
    public Map<String, MarkingStatisticPerson> getTaskList() {
        return taskList;
    }
    public void setTaskList(Map<String, MarkingStatisticPerson> taskList) {
        this.taskList = taskList;
    }
    
}

 

这是结果:

运行结果

分析后,发现,只要是那个key在原来的里面不存在的,都会自动加1,请问这是为什么? 

1、你用的struts2版本,那段代码你确定没有删减?
2、按照正常逻辑是没有问题;
3、能否贴出比较完整的代码,从你现在的代码看不出问题;

4、如果代码就是这样 可能taskList 的数据结构Map 实现有问题,你看一下Map实现是什么?

5、比如你的代码中是否有, "ognl表达式=null" 判断是null的代码写错了,这样会把null赋值;

尝试把Map遍历一下:




/s:iterator

看完你的代码我也感觉到诡异,难道使用
[]
他会在put一次?
那尝试

外层
======迭代key






/s:iterator
看输出的有没有 adfasd