gpt4 book ai didi

java - 使用 Thymeleaf 和 Spring Boot 转换器列出 JSON 字符串

转载 作者:行者123 更新时间:2023-11-30 10:33:44 26 4
gpt4 key购买 nike

我正在开发一种通过 Thymeleaf 模板生成 HTML 页面的服务。在其中一个模板中,我希望将 HTML 属性作为 JSON 字符串。我上下文中的相关对象是 ArrayList<String> .如果不做任何事情,输出将是 "[item1, item2]"但我想要"["random","stuff"]" .

我读过 ConverterFormatter我认为这是要走的路。但是我无法让我的转换系统工作。

这是我的习惯 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>

所以 tags是我的 ArrayList<String> .我也试过用 ${{data.tags}} 强制转换或 ${#conversions.convert(data.tags, 'String'}但唯一要做的就是转"[item1, item2]""item1,item2" .

正在做 tags=${new org.json.JSONArray(data.tags)}可以,但我想在其他地方使用它,可能不仅适用于 ArrayList<String> .

所以我的问题是:

  • 这可能吗?
  • Converter怎么走?
  • 我在配置中缺少什么?

谢谢。

最佳答案

无论出于何种原因,它都使用 List 而不是 ArrayList。另外,我会摆脱 addFormatters 方法。您只需要 bean 声明。

Spring 启动:

@SpringBootApplication
public class TheApplication extends WebMvcConfigurerAdapter {

public static void main(String[] args) {
SpringApplication.run(PageServiceApplication.class, args);
}

@Bean
public Converter<List<String>, String> converter() {
return new Converter<List<String>, String>() {
public String convert(List<String> source) {
return new JSONArray(source).toString();
}
};
}
}

Thymeleaf(标签双括号)

<some-webcomponent xmlns:th="http://www.thymeleaf.org"
th:attrappend="tags=${{data.tags}} ...">
</some-webcomponent>

关于java - 使用 Thymeleaf 和 Spring Boot 转换器列出 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42067604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com