Thymeleaf:动态构建变量名

时间:2019-04-02 11:12:58

标签: spring spring-boot thymeleaf

我试图通过连接变量的值并在之后添加一些字符串来动态地建立var的名称,因为我在运行时添加了这些变量。像下面这样的东西应该可以,但是不能。

th:text="${__#{myClass.getA().getB()}+'-result'__}"

这甚至有可能做到吗?我不知道变量的名称,不幸的是我只能像这样构造它。

1 个答案:

答案 0 :(得分:0)

是的,可能,Thymeleaf支持表达式预处理:

让我们从一些示例开始: message(i18n)表达式应使用#字符引用。因此,假设您的翻译文件中有message.key。要在Thymeleaf中引用它,您将必须使用

th:text="#{message.key}"

在您的方案中,您的密钥名称是根据变量动态生成的,因此要在百里香中对其进行预处理,您需要使用两个下划线__

让我们假设在您的上下文中有一个名为myModelVariable的模型变量,带有方法messagePrefix()。我们的示例变为:

th:text="#{__${myModelVariable.messagePrefix()}__}"

这意味着将首先处理myModelVariable.messagePrefix(),并将结果用作键名,然后将其解析为友好的用户友好消息。

如果您还想在其末尾添加一个静态零件,则将如下所示:

th:text="#{__${myModelVariable.messagePrefix()}__}+'*'"

即使键可以包含静态部分,也可以接受:

th:text="#{__${myModelVariable.messagePrefix()}__.staticsuffix}+'*'"

您可以在2.7节中找到更多信息: https://www.thymeleaf.org/doc/articles/standarddialect5minutes.html