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

问题描述 投票:8回答:3

我写了一个这样的函数:

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')}时,在thymeleaf得到了一个错误Exception evaluating SpringEL expression: "reverseString('hello')"

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

thymeleaf spring-el
3个回答
6
投票

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

@Component
public interface SUtils {

  static String reverseString(String input) {
    // ...
  }
}

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

1
投票

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

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


0
投票

您可以在配置或应用程序类中创建Bean,就像这样

@Bean(name = "sUtils")
public SUtils sUtilsBean() {
    return new SUtils();
}
© www.soinside.com 2019 - 2024. All rights reserved.