如何根据百里香叶中的变量值打印不同的文本? [复制]

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 标签,可以使用&lt;th:block&gt;。您可以考虑将默认大小写设置为红色或您喜欢的错误颜色。请确保默认情况是最后一个。

如果您需要以多种语言显示文本,则需要从消息包中打印这些值,但这超出了本问题的范围。

【讨论】:

以上是关于如何根据百里香叶中的变量值打印不同的文本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

带有弹簧靴的百里香叶缓存

如何从 JavaScript 中的变量值创建对象属性? [复制]

带有百里香叶转义字符的内联javascript

点击链接不适用于百里香叶

弹簧靴和百里香叶

百里香叶。 th:each 不适用于模型属性