Index: lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/web/action/LearningAction.java =================================================================== diff -u -rf3194b0987d78841b7d01d43c2f4d2fc200a5d49 -r874dc94c4844b91d40cb30d79e4d0de3a40bfe43 --- lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/web/action/LearningAction.java (.../LearningAction.java) (revision f3194b0987d78841b7d01d43c2f4d2fc200a5d49) +++ lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/web/action/LearningAction.java (.../LearningAction.java) (revision 874dc94c4844b91d40cb30d79e4d0de3a40bfe43) @@ -322,26 +322,27 @@ request.setAttribute(DacoConstants.ATTR_SESSION_MAP_ID, sessionMapID); sessionMap.put(DacoConstants.ATTR_LEARNING_CURRENT_TAB, 1); - ActionErrors errors = validateRecordForm(recordForm, questionList); - if (!errors.isEmpty()) { - this.addErrors(request, errors); - refreshQuestionSummaries(mapping, request); - request.setAttribute(DacoConstants.ATTR_DISPLAYED_RECORD_NUMBER, recordForm.getDisplayedRecordNumber()); - return mapping.findForward(DacoConstants.SUCCESS); - } - List record = null; - List> records = (List>) sessionMap.get(DacoConstants.ATTR_RECORD_LIST); + int recordCount = records.size(); int displayedRecordNumber = recordForm.getDisplayedRecordNumber(); boolean isEdit = false; - if (displayedRecordNumber <= records.size()) { + if (displayedRecordNumber <= recordCount) { record = records.get(displayedRecordNumber - 1); isEdit = true; } else { record = new LinkedList(); + recordCount++; } + ActionErrors errors = validateRecordForm(daco, recordForm, questionList, recordCount); + if (!errors.isEmpty()) { + this.addErrors(request, errors); + refreshQuestionSummaries(mapping, request); + request.setAttribute(DacoConstants.ATTR_DISPLAYED_RECORD_NUMBER, recordForm.getDisplayedRecordNumber()); + return mapping.findForward(DacoConstants.SUCCESS); + } + Iterator questionIterator = questionList.iterator(); DacoQuestion question = null; int formAnswerNumber = 0; @@ -602,13 +603,9 @@ int recordCount = ((List) sessionMap.get(DacoConstants.ATTR_RECORD_LIST)).size(); Daco daco = (Daco) sessionMap.get(DacoConstants.ATTR_DACO); Short min = daco.getMinRecords(); - Short max = daco.getMaxRecords(); if (min != null && min > 0 && recordCount < min) { errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(DacoConstants.ERROR_MSG_RECORD_NOTENOUGH, daco .getMinRecords())); - } else if (max != null && max > 0 && recordCount > max) { - errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(DacoConstants.ERROR_MSG_RECORD_TOOMUCH, daco - .getMaxRecords())); } return errors; } @@ -676,13 +673,21 @@ return dacoUser; } - protected ActionErrors validateRecordForm(RecordForm recordForm, Set questionList) { + protected ActionErrors validateRecordForm(Daco daco, RecordForm recordForm, Set questionList, + int recordCount) { ActionErrors errors = new ActionErrors(); + Short maxRecords = daco.getMaxRecords(); + if (maxRecords != null && maxRecords > 0 && recordCount > maxRecords) { + errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(DacoConstants.ERROR_MSG_RECORD_TOOMUCH, daco + .getMaxRecords())); + } + Iterator questionIterator = questionList.iterator(); DacoQuestion question = null; int answerNumber = 0; int fileNumber = 0; int questionNumber = 1; + while (questionIterator.hasNext()) { question = questionIterator.next(); switch (question.getType()) { Index: lams_tool_daco/web/pages/learning/addRecord.jsp =================================================================== diff -u -r3bdebf472590492a1e54e2495e1b566449e5ea4a -r874dc94c4844b91d40cb30d79e4d0de3a40bfe43 --- lams_tool_daco/web/pages/learning/addRecord.jsp (.../addRecord.jsp) (revision 3bdebf472590492a1e54e2495e1b566449e5ea4a) +++ lams_tool_daco/web/pages/learning/addRecord.jsp (.../addRecord.jsp) (revision 874dc94c4844b91d40cb30d79e4d0de3a40bfe43) @@ -35,7 +35,21 @@

- ${displayedRecordNumber} + + ${displayedRecordNumber} + +
+ + + +
+ +
+ + + +
+