thymleaf 使用三目运算多个条件判断的写法

前言:最近做的项目中使用到了thymleaf ,因为不是特别会,所以走了很多弯路,在此总结一下。

做类似 “男女” 下拉选择的时候,一般使用 0、1 来进行标识,一般这样写:

<select class="form-control" id="isRecommend" th:value="${paper.isRecommend=='0'?'推荐':'不推荐'}">

这样的只有两个状态标识的,可以这样写,但是多个条件的话,就会报错,例如:

<select class="form-control" id="apType" th:value="${activePic.apType=='1'?'首页3主图':'2'?'权威活动图':'精彩活动图'}">

报错信息:

Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "activePic.apType=='1'?'首页3主图':'2'?'权威活动图':'精彩活动图'" (template: "system/home/edit" - line 15, col 58)
	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)

Caused by: org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.lang.Boolean] for value '2'; nested exception is java.lang.IllegalArgumentException: Invalid boolean value '2'
	at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:46)
	at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:191)
	at org.springframework.expression.spel.support.StandardTypeConverter.convertValue(StandardTypeConverter.java:70)

经过反复的尝试,得出正确的写法:

<select class="form-control" id="apType" th:value="${activePic.apType}=='1'?'首页3主图':(${activePic.apType}=='2'?'权威活动图':'精彩活动图')">

这是三个状态标识的写法,更多状态的话,没有尝试,有兴趣的同学可以尝试一下,欢迎各位在本篇博客下方留言评论。

你可能感兴趣的:(前端)