diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java index 6e44dcd8a7170ca2fe38c4925675dab8220353f4..3199e9125f4724a47fdee75f31f8b38994036eb3 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java @@ -63,6 +63,7 @@ import uk.ac.ed.ph.jqtiplus.value.Cardinality; import uk.ac.ed.ph.jqtiplus.value.DurationValue; import uk.ac.ed.ph.jqtiplus.value.FileValue; import uk.ac.ed.ph.jqtiplus.value.FloatValue; +import uk.ac.ed.ph.jqtiplus.value.IdentifierValue; import uk.ac.ed.ph.jqtiplus.value.IntegerValue; import uk.ac.ed.ph.jqtiplus.value.ListValue; import uk.ac.ed.ph.jqtiplus.value.MultipleValue; @@ -132,12 +133,13 @@ public class AssessmentRenderFunctions { // or not(@templateIdentifier) // or (qw:value-contains(qw:get-template-value(@templateIdentifier), @identifier) and not(@showHide='hide'))])"/> public static boolean isVisible(Choice choice, ItemSessionState iSessionState) { - Value templateValue = choice.getTemplateIdentifier() == null ? null : iSessionState.getTemplateValue(choice.getTemplateIdentifier()); - - return choice.getTemplateIdentifier() != null - //TODO the check must be checked - || (templateValue != null && templateValue.toString().equals(choice.getIdentifier().toString())) - || choice.getVisibilityMode() != VisibilityMode.HIDE_IF_MATCH; + if(choice.getTemplateIdentifier() == null) return true; + + Value templateValue = iSessionState.getTemplateValue(choice.getTemplateIdentifier()); + boolean visible = templateValue instanceof IdentifierValue + && ((IdentifierValue)templateValue).identifierValue().equals(choice.getIdentifier()) + && choice.getVisibilityMode() != VisibilityMode.HIDE_IF_MATCH; + return visible; } //<xsl:if test="qw:is-invalid-response(@responseIdentifier)">