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

2024-04-18

我正在开发一项通过 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该怎么走?
  • 我的配置缺少什么?

谢谢。


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

春季启动:

@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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Thymeleaf 和 Spring Boot 转换器列出 JSON 字符串 的相关文章

  • VideoView SeekTo 在不同设备上工作异常 - Android

    我在视频视图上使用此代码来寻求自定义位置 但它在三星设备上工作正常 但在索尼设备上 视频寻求开始位置 开始 我想让视频回到上次暂停的位置 创建视频视图 VideoView mVideoPlayer setVideoPath ViDpath
  • 如何使用jq提取json值子字符串

    我有这个 json temperature 21 humidity 12 3 message Today ID 342 is running 我想使用jq来获取这个json temp 21 hum 12 3 id 342 正如你所看到的 我
  • 如何在Go中从interface{}解组到interface{}

    我的系统中有多个通过 RPC 进行通信的节点 我正在尝试通过 RPC 将 map string interface 发送到另一个节点 发送方使用 json Marshal 接收方使用 json Unmarshal 来获取地图 假设在发送方
  • 序列化的 lambda 且没有serialVersionUID?

    我正在尝试了解 Java 及其最新版本的序列化如何工作 我正在尝试像这样序列化 lambda Runnable r Runnable Serializable gt System out println This is a test 但我注
  • Jhipster 实体子生成器:如何创建 liquibase DELTA 变更日志?

    jhipster version 5 3 4 我正在评估 JHipster 并测试它如何处理数据库 DDL 修改 在我的测试中 我创建了一个 Jhipster 项目 然后运行jhipster import jdl model jh JHip
  • javadoc“@author”未显示?

    每当我在 intelliJ 中输入 Printing 并按 CTRL Q 时 我只能看到 Summary 而看不到 Bob 我究竟做错了什么 package printing author Bob b Summary b public cl
  • 与 Java 7 相比,Java 8 ScriptEngine 的主要性能问题

    我有一个 Java 程序 使用 JDK 7u80 编译 它广泛使用了 JavaScript ScriptEngine JSR 223 我注意到 与 Java 7 运行时环境 JRE 7u80 相比 我的程序在 Java 8 运行时环境 JR
  • Java如何使用私钥文件而不是PEM来解密?

    使用 Java 和 Bouncy Castle 1 52 我可以使用以下代码通过 PEM 证书加载私钥 我还有一个相同的 PKCS8 格式的 private key 文件 直接使用private key文件而不是PEM的代码是什么 Stri
  • Spring 3.1 和 JPA 2 没有正在进行的事务异常

    我已经这样做了几个星期了 我已经尝试过 eclipselink 现在只是普通的 JPA 我不断遇到同样的问题 每次我尝试刷新实体管理器时 都会收到 javax persistence TransactionRequiredException
  • 使用 Java 谓词和 Lambda

    为什么下面的代码会返回Predicate
  • Java中使用什么方法来销毁你的对象[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 你能为我的问题举一个例子吗 抱歉 J
  • 如何将 HashMap> 存储在列表中?

    我的哈希图将字符串存储为键 将数组列表存储为值 现在 我需要将其嵌入到列表中 也就是说 它将采用以下形式 List
  • 无法运行正在访问 GlassFish v3 上的 EJB 的应用程序客户端

    环境 GlassFish 3 0 1 NetBeans 6 9 JDK 6u21 Problem 无法运行正在访问 EJB 的应用程序客户端 错误报告可以在下面找到http netbeans org bugzilla show bug cg
  • 如何更改 localStorage 项中的单个值?

    我正在尝试更改本地存储中的值 此项是复选框的状态 我希望 每次选中复选框时都将该复选框的值设置为 true 或 false 我尝试了很多方法 直到我意识到不使用 JSON 就无法更改值 要添加我使用的值 localStorage setIt
  • 读取pkcs12证书信息

    我在读取证书信息时遇到问题 我想以编程方式在 Android 中使用 java 和 bouncycastle 库来阅读完整信息 现在 我只是在控制台中使用 keytool 命令 gt keytool list keystore 1 p12
  • ZonedDateTime 的 Jackson 反序列化问题

    我在反序列化我正在使用的服务期间使用的类中有以下字段 private ZonedDateTime transactionDateTime 我正在使用的服务可能会使用以下模式返回日期或日期时间 yyyy MM dd T HH mm ss SS
  • SQL 查询中的外语/重音字符

    我正在使用 Java 和 Spring 的 JdbcTemplate 类在 Java 中构建一个 SQL 查询来查询 Postgres 数据库 但是 我在执行包含外来 重音字符的查询时遇到问题 例如 修剪后的 代码 JdbcTemplate
  • Java多线程和安全发布[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 看完之后 Java并发实践 http jcip net and OSGI 实践 http neilbartlett name blog osgi
  • 在哪里可以找到所有 HQL 关键字的列表?

    在哪里可以找到所有 HQL 关键字的列表 在完整的 Hibernate 源代码下载中 有一个grammar hql g文件 这是ANTLR http www antlr org 语言定义 您可以从官方GitHub源码仓库查看该文件的最新版本
  • Spring JPA - 通过 EmbeddedId 部分查找

    以下代码仅用于演示目的 My Entity豆看起来像这样 Entity class Employee EmbeddedId private EmployeeKey employeeKey private String firstName p

随机推荐