diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java index 6ba0c917d6037ebde1c1689adb0815a0c5f367de..804f923df429acb124d542910ab424da9e9b5180 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java @@ -202,27 +202,34 @@ public class MatchEditorController extends FormBasicController { if(singleMultiEl.isOneSelected() && singleMultiEl.isSelected(0)) { Map<String,String> sourseTargetMap = new HashMap<>(); String[] directedPairsIds = ureq.getHttpReq().getParameterValues("qtiworks_response_" + itemBuilder.getResponseIdentifier()); - for(String directedPairIds: directedPairsIds) { - String[] pairs = directedPairIds.split(" "); - String sourceId = pairs[0]; - String targetId = pairs[1]; - if(sourseTargetMap.containsKey(sourceId)) { - for(MatchWrapper sourceWrapper:sourceWrappers) { - if(sourceId.equals(sourceWrapper.getIdentifierString())) { - sourceWrapper.setErrorSingleChoice(true); + if(directedPairsIds == null || directedPairsIds.length == 0) { + for(MatchWrapper sourceWrapper:sourceWrappers) { + sourceWrapper.setErrorSingleChoice(true); + allOk &= false; + } + } else { + for(String directedPairIds: directedPairsIds) { + String[] pairs = directedPairIds.split(" "); + String sourceId = pairs[0]; + String targetId = pairs[1]; + if(sourseTargetMap.containsKey(sourceId)) { + for(MatchWrapper sourceWrapper:sourceWrappers) { + if(sourceId.equals(sourceWrapper.getIdentifierString())) { + sourceWrapper.setErrorSingleChoice(true); + } } + allOk &= false; + } else { + sourseTargetMap.put(sourceId, targetId); } - allOk &= false; - } else { - sourseTargetMap.put(sourceId, targetId); } - } - - for(MatchWrapper sourceWrapper:sourceWrappers) { - String sourceId = sourceWrapper.getIdentifierString(); - if(!sourseTargetMap.containsKey(sourceId)) { - sourceWrapper.setErrorSingleChoice(true); - allOk &= false; + + for(MatchWrapper sourceWrapper:sourceWrappers) { + String sourceId = sourceWrapper.getIdentifierString(); + if(!sourseTargetMap.containsKey(sourceId)) { + sourceWrapper.setErrorSingleChoice(true); + allOk &= false; + } } } }