You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:15:02