如何在 Thymeleaf 中使用自定义 Spring EL 函数?
How to use custom Spring EL function in Thymeleaf?
我写了这样一个函数:
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
注册这个函数。
而在controller中我使用@Value("#{#reverseString('hello')}")
可以得到值。
但是在 thymeleaf 中,当我使用 ${reverseString('hello')}
时出现错误
Exception evaluating SpringEL expression: "reverseString('hello')"
.
如何在 thymeleaf 中使用自定义拼写?
前面没有办法测试,但随便用静态调用试试:
th:text="${T(com.package.SUtils).reverseString('hello')}"
我通常做的是使用 @Component
将 Thymeleaf 实用程序 类 定义为一个 Bean。在 Spring EL 中,您可以使用 @
和自动检测来简单地引用它们。所以不需要注册。
@Component
public interface SUtils {
static String reverseString(String input) {
// ...
}
}
<span th:text="${@sUtils.reverseString('hello')}"></span>
您可以在您的配置或应用程序中创建一个 Bean class,像这样
@Bean(name = "sUtils")
public SUtils sUtilsBean() {
return new SUtils();
}
我写了这样一个函数:
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
注册这个函数。
而在controller中我使用@Value("#{#reverseString('hello')}")
可以得到值。
但是在 thymeleaf 中,当我使用 ${reverseString('hello')}
时出现错误
Exception evaluating SpringEL expression: "reverseString('hello')"
.
如何在 thymeleaf 中使用自定义拼写?
前面没有办法测试,但随便用静态调用试试:
th:text="${T(com.package.SUtils).reverseString('hello')}"
我通常做的是使用 @Component
将 Thymeleaf 实用程序 类 定义为一个 Bean。在 Spring EL 中,您可以使用 @
和自动检测来简单地引用它们。所以不需要注册。
@Component
public interface SUtils {
static String reverseString(String input) {
// ...
}
}
<span th:text="${@sUtils.reverseString('hello')}"></span>
您可以在您的配置或应用程序中创建一个 Bean class,像这样
@Bean(name = "sUtils")
public SUtils sUtilsBean() {
return new SUtils();
}