Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "item.url" (template: "/rss/index" - line 16, col 9)at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393)at org.attoparser.MarkupParser.parse(MarkupParser.java:257)at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230)... 61 common frames omitted
Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'url' cannot be found on object of type 'org.apache.commons.collections.map.CaseInsensitiveMap' - maybe not public or not valid?at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:217)at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:104)at org.springframework.expression.spel.ast.PropertyOrFieldReference.access$000(PropertyOrFieldReference.java:51)at org.springframework.expression.spel.ast.PropertyOrFieldReference$AccessorLValue.getValue(PropertyOrFieldReference.java:406)at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:90)at org.springframework.expression.spel.ast.OpEQ.getValueInternal(OpEQ.java:42)at org.springframework.expression.spel.ast.OpEQ.getValueInternal(OpEQ.java:32)at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:151)at org.springframework.expression.spel.ast.Ternary.getValueInternal(Ternary.java:53)at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:111)at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:328)at org.thymeleaf.spring5.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:263)... 88 more
${item.url}為對象.屬性的寫法。spring el 表達式中map.key的寫法也可用。 實體對象和map對象的區別在于,實體對象的屬性是100%存在的(即使值是null),但map對象的key有可能不存在。 這里的item是map對象,又就遇到了url不存在的情況。因此使用map.key的寫法就發生了錯誤。
解決辦法
使用 map['key']的寫法代替map.key的寫法,并且使用spring el 的三元表達式處理默認值,如下: