如何根据百里香叶中的变量值打印不同的文本? [复制]
Posted
技术标签:
【中文标题】如何根据百里香叶中的变量值打印不同的文本? [复制]【英文标题】:How to print different text based on a variable value in thymeleaf? [duplicate] 【发布时间】:2020-07-10 02:38:17 【问题描述】:<p th:text="|Commande no : $expedition.idCommande|" class="font-weight-bold"></p>
<p th:text="$expedition.etat"></p>
expedition.etat 是一个 int,取值为 0、1 或 2
我希望第二段的内部文本为“准备中”、“已发送”或“已交付”,而不是 0、1、2。
我想我可以用 th:if 和 th:text 各放 3 段来解决问题; 或者,也许我可以在我的探险对象中添加一个 getStatusAsText 方法; 但没有更好的方法来实现这一点吗?
【问题讨论】:
处理此问题的不同方法,最好使用if
语句 - 但expedition.etat
是否接受expedition.idCommande
作为参数?该值是在服务器端还是客户端计算的? Thymeleaf 文档中有示例。看看使用th:with
作为参数。
expedition 作为模型属性传递,并对应于具有 3 个字段的普通 java 对象:int id、int idCommande 和 int etat(法语为状态)(具有常规 getter 和 setter 的私有字段 - 我猜在百里香中使用是强制性的,对吗?)。所以没有依赖 btw etat 和 idCommande,它们是相同对象的 2 个字段。我猜一切都是在服务器端完成的(除非我对 thymeleaf 在 spring mvc 中用作模板框架时的工作方式非常错误)。
我会调查 th:with
th:看起来不像我需要的(我不想声明新变量)。我只是在寻找一种 thymeleaf 方式来进行开关,然后为每个值指定一个不同的 th:text 属性......如果在 thymeleaf 中存在这样的东西
好的,但是如何计算它是 0、1 还是 2?是来自其他服务吗?还是由用户在客户端提供?
【参考方案1】:
您可以简单地打开该值:
<div th:switch="$expedition.etat">
<p th:case="0">In preparation</p>
<p th:case="1">Sent</p>
<p th:case="2">Delivered</p>
<p th:case="*">No state found</p>
</div>
如果您不想打印 html 标签,可以使用<th:block>
。您可以考虑将默认大小写设置为红色或您喜欢的错误颜色。请确保默认情况是最后一个。
如果您需要以多种语言显示文本,则需要从消息包中打印这些值,但这超出了本问题的范围。
【讨论】:
以上是关于如何根据百里香叶中的变量值打印不同的文本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章