如何在Thymeleaf中使用自定义Spring EL功能?

时间:2017-08-16 07:30:34

标签: thymeleaf spring-el

我写了一个像这样的函数:

public interface SUtils {

    static String reverseString(String input) {
        StringBuilder backwards = new StringBuilder();
        for (int i = 0; i < input.length(); i++) {
            backwards.append(input.charAt(input.length() - 1 - i));
        }
        return backwards.toString();
    }
}

并使用StandardEvaluationContext.registerFunction注册此功能。 在控制器中我使用@Value("#{#reverseString('hello')}")可以得到值。 但是当我使用${reverseString('hello')}时,在百里香中出现错误 Exception evaluating SpringEL expression: "reverseString('hello')"

如何在百里香中使用自定义拼写?

3 个答案:

答案 0 :(得分:6)

我通常做的是使用@Component将Thymeleaf实用程序类定义为Bean。在Spring EL中,您可以使用带有自动检测的@简单地引用它们。所以没有必要注册它们。

@Component
public interface SUtils {

  static String reverseString(String input) {
    // ...
  }
}
<span th:text="${@sUtils.reverseString('hello')}"></span>

答案 1 :(得分:0)

不是在测试方法的前面,而是随意尝试使用静态调用:

th:text="${T(com.package.SUtils).reverseString('hello')}"

答案 2 :(得分:0)

您可以在配置或应用程序类中创建Bean,如此

@Bean(name = "sUtils")
public SUtils sUtilsBean() {
    return new SUtils();
}