JSP 检查Thymeleaf页面中的对象上是否存在特定字段

mepcadol  于 2022-12-07  发布在  其他
关注(0)|答案(2)|浏览(202)
<th:block th:each="item : ${mclist}" >
           <option th:if="${item.id}" th:value="${item.id}" th:text="${item}"></option>
           <option th:if="${item.id == null}" th:value="${item}" th:text="${item}"></option>
 </th:block>

对象'item'可以是任何实体。因此,它可能包含也可能不包含'id'字段。当实体不包含'id'字段时,此处提供的代码将出现以下错误。

org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'id' cannot be found on object of type 'java.lang.String' - maybe not public or not valid?

是否可以在提取'item'对象的值之前检查该对象中是否存在id字段?

c0vxltue

c0vxltue1#

尝试使用'?'运算符。类似于:

<div th:if="${item?.id}">
    <option th:value="${item.id}" th:text="${item}"></option>
</div>
fnx2tebb

fnx2tebb2#

只需使用“get”。

<th:block th:each="item : ${mclist}" >
    <option th:if="${item.get('id')} != null" th:value="${item.id}" th:text="${item}"></option>
</th:block>

相关问题