4.14 预处理
除了所有这些表达式处理相关的特性,Thymeleaf还有预处理表达式的特性。
预处理指的是在通常的表达式之前处理表达式。这允许对最终执行的表达式进行修改。
预处理表达式和通常的表达式一样,但是被一双下划线包围(像__${expression}__
)。
让我们想象一下:我们有一个国际化文件Messages_fr.properties
,里面包含着一个OGNL表达式。这个表达式会调用一个指定语言的静态方法,就像:
article.text=@myapp.translator.Translator@translateToFrench({0})
同时还有一个Messages_es.properties
文件:
article.text=@myapp.translator.Translator@translateToSpanish({0})
我们可以创建一段标记,根据地区信息对其中的一个表达式求值。为了达成目标,我们将首先选择表达式(使用预处理),然后让Thymeleaf执行它:
<p th:text="${__#{article.text('textVar')}__}">Some text here...</p>
注意:当地区信息是法国时,预处理将会创建如下的内容:
<p th:text="${@myapp.translator.Translator@translateToFrench(textVar)}">Some text here...</p>
预处理字符串__
可以使用\_\_
在属性里转义。