如何将FreeMarker的if-else表单逻辑改写为Thymeleaf实现
实现方案
Thymeleaf完全支持这类if-else分支逻辑,你可以通过th:if + th:unless的组合实现和原有FreeMarker完全一致的分支渲染效果,具体实现代码如下:
<!-- 更新客户表单:updateClient不为空时渲染 --> <div th:if="${updateClient != null}"> <h2 th:text="|Modifica del prodotto - ${updateClient.nome}|"></h2> <div style="margin: 20px;"> <form method="POST" th:action="@{/update}" id="updateClient"> <input type="hidden" name="id" th:value="${updateClient.id}"/> <div> <label for="nome">Name</label> <input type="text" name="nome" id="nome" th:value="${updateClient.nome}" /> </div> <div> <input type="submit" name="invia" value="Update" /> </div> </form> </div> </div> <!-- 新增客户表单:updateClient为空时渲染 --> <div th:unless="${updateClient != null}"> <h2>New Client</h2> <div style="margin: 20px;"> <form method="POST" th:action="@{/add}" id="newDataClient"> <div> <label for="nome">Nome</label> <input type="text" name="nome" id="nome" value="" /> </div> <div> <input type="submit" name="invia" value="Add" /> </div> </form> </div> </div>
核心语法说明
th:if:只有当属性值的表达式判定为true时,才会渲染当前标签及子标签内容,这里${updateClient != null}就是判断变量是否存在,和FreeMarker的updateClient??效果完全一致th:unless:是th:if的反向逻辑,只有当属性值的表达式判定为false时才会渲染当前标签内容,刚好对应原逻辑的else分支- 动态内容渲染:动态文本用
th:text属性赋值,动态属性值用th:属性名的格式替换原生属性,变量取值语法和FreeMarker基本一致,直接用${变量名.属性名}即可。
内容的提问来源于stack exchange,提问作者helloJava
相关产品推荐
相关产品推荐

