日期:2014-05-20  浏览次数:20691 次

双层s:iterator的处理,有没有人做过?
首先是实体类:
实体类1:TrainingCourseClassAttendHistory.java
Java code

private Integer attendRecordId;
    private Integer applicationId;
    private Integer attendPercentage;
    private Integer cpdId;
    private Integer mpfCpdCore;
    private Integer mpfCpdNonCore;
    private Integer cpt;
    private String createdBy;
    private Timestamp createDate;
    private Set<TrainingCourseClassAttendPeriod> trainingCourseClassAttendPeriod = null;
set/get省略


实体类2:TrainingCourseClassAttendPeriod.java
Java code

    private Integer id;
    private Integer attendRecordId;
    private Timestamp attendDate;
    private Boolean attendAmSession;
    private Boolean attendPmSession;


两个实体类通过attendRecordId连接。现在要实现s:iterator显示TrainingCourseClassAttendHistory.java,在其内部再显示第二个实体类的内容。
效果如下:

显示是可以的,但是再次保存这些数据的时候就不行了。
显示时用的是List<TrainingCourseClassAttendHistory>

保存时也是用的List<TrainingCourseClassAttendHistory>



------解决方案--------------------
<s:iterator var="t" item="${TrainingCourseClassAttendHistory}">

.........

<s:iterator var="t2" item="${t.TrainingCourseClassAttendPeriod}">

........

</s:iterator>

</s:iterator>
应该就是差不多这样的结构,iterator里面的两个属性可能记错。到时候要是错的话,你换一下就行了。

------解决方案--------------------
哈哈。。。这其实我也有点弄不懂。好像是你以前问过这个嵌套的问题,我回答的
你在后台把List里面嵌套的集合遍历一遍。只需要遍历一边,不用做其它的操作
再试试。。。我以前就是这么解决的
Java code

    public List<Role> selRole(int currentPage) {
        session = sf.getCurrentSession();
        Query query = session.createQuery("from Role");
        query.setFirstResult((currentPage - 1) * RPAGESIZE);
        query.setMaxResults(RPAGESIZE);
        List<Role> list = query.list();
        for (int i = 0; i < list.size(); i++) {
            Iterator it = list.get(i).getStates().iterator();
            while (it.hasNext()) {
                State s = (State) it.next();
            }
        }
        return query.list();
    }

------解决方案--------------------
意思是提交保存?不是name与之相对应不就好了

<s:iterator value="firstList" status="stu" var="xxx">
<input name="firstList[${stu.index}].xxx1"/>
<s:iterator value="xxx.secondList" status="stud" var="xxxx">
<input name="firstList[${stu.index}].secondList[${stud.index}].xxxx1" />
</s:iterator>
</s:iterator>