百里香叶解决变量

时间:2016-07-19 17:04:23

标签: java thymeleaf

我想知道,如果可以使用已解析的变量作为对象的getter名称。

喜欢:

   <div th:with="finalObject = ${rowentry.${tdentry}} >
              <p th:text="${finalObject}">object</p>
   </div>

${tdentry},如“key”或“value”

所以我将获得entry.key,这将解析为我的java对象rowEntry.getKey()中的rowEntry

1 个答案:

答案 0 :(得分:0)

对于这种结构,人们需要非常小心,因为如果${tdentry}没有您期望的值之一,您可能会很快遇到麻烦。一般来说,接近这种事情的方法就是拥有一个存储密钥的变量,一个存储该值的变量,然后使用类似th:if的条件来选择哪一个。这可能看起来有些讽刺,但对于稍后查看代码的人来说,至少可以明显正确和明显。

但您在Thymeleaf中要求的功能称为&#34; Preprocessing&#34;。你可以使用这样的东西:

<div th:with="finalObject=${rowentry.__${tdentry}__}">

首先计算双下划线中的表达式,然后在主表达式中使用结果。这是一个非常强大的工具,我偶尔会使用它,但它可能会导致一些混乱(和其他动态生成的代码一样,如果你不小心的安全漏洞)。