I am trying to access a java enum in thymeleaf in a case statement, but I am getting a ClassNotFoundException when trying to access it. I am not using Spring, so I am using OGNL syntax. I've confirmed that there's no typo in package or enum name, so I'm stumped as to why OGNL/Thymeleaf can't find the enum to use
Code snippet:
<th:block th:switch="${question.getType()}">
<th:block th:case="${@services.question.types.QuestionType@CHECKBOX}">
// stuff in the case statement
</th:block>
// More case statements for other enum values.
</th:block>
My error looks like this
Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating OGNL expression: "@services.question.types.QuestionType@CHECKBOX" (template: "applicant/ApplicantQuestionFragment" - line 4, col 19)
at org.thymeleaf.standard.expression.OGNLVariableExpressionEvaluator.evaluate(OGNLVariableExpressionEvaluator.java:199)
at org.thymeleaf.standard.expression.OGNLVariableExpressionEvaluator.evaluate(OGNLVariableExpressionEvaluator.java:104)
at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression(VariableExpression.java:166)
at org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:66)
at org.thymeleaf.standard.expression.Expression.execute(Expression.java:109)
at org.thymeleaf.standard.expression.Expression.execute(Expression.java:138)
at org.thymeleaf.standard.expression.EqualsExpression.executeEquals(EqualsExpression.java:75)
at org.thymeleaf.standard.expression.ComplexExpression.executeComplex(ComplexExpression.java:95)
at org.thymeleaf.standard.expression.Expression.execute(Expression.java:112)
at org.thymeleaf.standard.expression.Expression.execute(Expression.java:138)
at org.thymeleaf.standard.expression.Expression.execute(Expression.java:125)
at org.thymeleaf.standard.processor.StandardCaseTagProcessor.isVisible(StandardCaseTagProcessor.java:106)
at org.thymeleaf.standard.processor.AbstractStandardConditionalVisibilityTagProcessor.doProcess(AbstractStandardConditionalVisibilityTagProcessor.java:61)
at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74)
at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95)
at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633)
at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314)
at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205)
at org.thymeleaf.engine.Model.process(Model.java:282)
at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1587)
Caused by: ognl.OgnlException: Could not get static field CHECKBOX from class services.question.types.QuestionType
Caused by: java.lang.ClassNotFoundException: services.question.types.QuestionType
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at org.thymeleaf.standard.expression.OGNLVariableExpressionEvaluator$ThymeleafDefaultClassResolver.toClassForName(OGNLVariableExpressionEvaluator.java:413)
at org.thymeleaf.standard.expression.OGNLVariableExpressionEvaluator$ThymeleafDefaultClassResolver.classForName(OGNLVariableExpressionEvaluator.java:404)
at org.thymeleaf.standard.expression.OGNLVariableExpressionEvaluator$ThymeleafACLClassResolver.classForName(OGNLVariableExpressionEvaluator.java:379)
at ognl.OgnlRuntime.classForName(OgnlRuntime.java:1584)
at ognl.ASTStaticField.isNodeConstant(ASTStaticField.java:78)
at ognl.SimpleNode.isConstant(SimpleNode.java:343)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:202)
at ognl.SimpleNode.getValue(SimpleNode.java:258)
at ognl.Ognl.getValue(Ognl.java:586)
at ognl.Ognl.getValue(Ognl.java:550)
at org.thymeleaf.standard.expression.OGNLVariableExpressionEvaluator.executeExpression(OGNLVariableExpressionEvaluator.java:340)
at org.thymeleaf.standard.expression.OGNLVariableExpressionEvaluator.evaluate(OGNLVariableExpressionEvaluator.java:178)
at org.thymeleaf.standard.expression.OGNLVariableExpressionEvaluator.evaluate(OGNLVariableExpressionEvaluator.java:104)
at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression(VariableExpression.java:166)
at org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:66)
Tried both OGNL and Spring syntax