【问题标题】:Thymeleaf: Building variable names dynamicallyThymeleaf:动态构建变量名
【发布时间】:2019-04-02 11:12:58
【问题描述】:

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

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

这甚至可能吗?不知道变量名,可惜只能这样构造。

【问题讨论】:

    标签: spring spring-boot thymeleaf


    【解决方案1】:

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

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

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

    在您的场景中,您的键名是根据变量动态生成的,因此要在 thymeleaf 中对其进行预处理,您需要使用两个下划线 __

    假设在您的上下文中,您有一个名为 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

    【讨论】:

      猜你喜欢
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      • 2019-07-03
      • 2021-10-26
      • 2011-10-27
      相关资源
      最近更新 更多