前言:最近做的項目中使用到了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'?'權威活動圖':'精彩活動圖')">
這是三個狀態標識的寫法,更多狀態的話,沒有嘗試,有興趣的同學可以嘗試一下,歡迎各位在本篇博客下方留言評論。