我正在开发一项通过 Thymeleaf 模板生成 HTML 页面的服务。在其中一个模板中,我希望有一个 HTML 属性作为 JSON 字符串。我的上下文中的相关对象是ArrayList<String>
。如果不执行任何操作,输出将是"[item1, item2]"
但我想要"["random","stuff"]"
.
我读过关于Converter
and Formatter
我认为这就是正确的出路。但我无法让我的转换系统工作。
这是我的习惯Converter
:
public class ListConverter implements Converter(ArrayList<String>, String {
public String convert (ArrayList<String> source) {
return new JSONArray(source).toString();
}
}
主类看起来像
@SpringBootApplication
public class TheApplication extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(PageServiceApplication.class, args);
}
@Bean
public ListConverter listConverter() {
return new ListConverter();
}
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter( listConverter() );
}
}
最后 Thymeleaf 模板看起来像
<some-webcomponent xmlns:th="http://www.thymeleaf.org"
th:attrappend="tags=${data.tags} ...">
</some-webcomponent>
So tags
is my ArrayList<String>
。我也尝试过强制转换${{data.tags}}
或与${#conversions.convert(data.tags, 'String'}
但这唯一的作用就是转"[item1, item2]"
to "item1,item2"
.
Doing tags=${new org.json.JSONArray(data.tags)}
有效,但我希望在其他地方也能做到这一点,而且可能不仅仅是为了ArrayList<String>
.
所以我的问题是:
- 这有可能吗?
- are
Converter
该怎么走?
- 我的配置缺少什么?
谢谢。