我试图通过连接变量的值并在之后添加一些字符串来动态地建立var的名称,因为我在运行时添加了这些变量。像下面这样的东西应该可以,但是不能。
th:text="${__#{myClass.getA().getB()}+'-result'__}"
这甚至有可能做到吗?我不知道变量的名称,不幸的是我只能像这样构造它。
答案 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