java - Spring AnnotationFormatterFactory 与 Thymeleaf th :text, 仅在字段显式为字符串时格式化

标签 java spring spring-mvc formatting thymeleaf

我对 spring 和 thymeleaf 以及格式有疑问。 我已经注册了这样的转换服务:

public class CurrencyConversionService implements AnnotationFormatterFactory<CurrencyField> {

    @Override
    public Set<Class<?>> getFieldTypes() {
        return new HashSet<>(asList(new Class<?>[]{BigDecimal.class}));
    }

    @Override
    public Printer<?> getPrinter(CurrencyField annotation, Class<?> fieldType) {
        return new Printer<BigDecimal>() {
            @Override
            public String print(BigDecimal object, Locale locale) {
                return formatCurrency(object, "€");
            }
        };
    }

    @Override
    public Parser<?> getParser(CurrencyField annotation, Class<?> fieldType) {
        return (text, locale) -> stringToBigDecimal(text);
    }
}

现在,只有当我将 thymeleaf 模板中的字段显式设置为字符串时,它才会格式化。

在这种情况下,不会发生格式化:

<span th:text="${incoming_invoice.amount}"></span>

在这种情况下,字段格式正确:

<span th:text="${''+incoming_invoice.amount}"></span>

这里可能出现什么问题?

最佳答案

找到答案了。变量需要放在双括号中。

<p th:text="${{val}}">...</p>

引用:https://github.com/thymeleaf/thymeleaf/issues/223

仍然不知道为什么我的问题中的第二个选项有效,但这对我来说现在并不是那么重要。

关于java - Spring AnnotationFormatterFactory 与 Thymeleaf th :text, 仅在字段显式为字符串时格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37592823/

相关文章:

java - 如何确定 2 个逻辑驱动器是否在 Java 中的同一个物理磁盘上

java - GAE 上的持久性异常

java - spring autowire 不工作 Autowiring 依赖项注入(inject)类型的限定 bean 失败;

java - 关于我的服务应该如何交互的建议

spring - 在 Spring 中使用 setAllowedFields() 方法

java - 使用 Java 代码中的 sql 将当前日期和时间更新到数据库

java - 确定 Java Swing 中的重叠组件

java - 如何使用 jpa 存储库获取多个平均值(spring boot)

spring - 如何使用 Spring REST 调用返回错误实例

java - 如何在原型(prototype)之间共享实例(Spring LoC)