我写了一个这样的函数:
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')"
。
如何在百里香中使用自定义拼写?
我通常做的是使用@Component
将Thymeleaf实用程序类定义为Bean。在Spring EL中,您可以使用带自动检测的@
简单地引用它们。所以没有必要注册它们。
@Component
public interface SUtils {
static String reverseString(String input) {
// ...
}
}
<span th:text="${@sUtils.reverseString('hello')}"></span>
不是在测试方式前面,而是随意尝试使用静态调用:
th:text="${T(com.package.SUtils).reverseString('hello')}"
您可以在配置或应用程序类中创建Bean,就像这样
@Bean(name = "sUtils")
public SUtils sUtilsBean() {
return new SUtils();
}