我是Spring Boot的新手,目前正在为CMS创建表单以创建文章。本文包含与SO的标签系统相似的关键字。现在,这是一个简单的逗号分隔的关键字列表。但是,在尝试依赖thymeleaf将Command对象转换为所需格式时遇到了一个问题。以下是相关对象:
@Setter
@NoArgsConstructor
public class ArticleCommand {
private Long id;
private String title;
private String slug;
private String summary;
private String body;
private Set<ArticleKeywordCommand> keywords = new HashSet<>();
}
@Getter
@Setter
@NoArgsConstructor
public class ArticleKeywordCommand {
private ArticleKeywordsKey id;
private Long articleId;
private KeywordCommand keyword;
@Override
public String toString() {
return keyword.getName();
}
}
您可以看到,我在ArticleKeywordCommand中添加了toString()方法,以使表单具有将关键字的值输出到输入字段中的形式,并将这些值包含为以逗号分隔的列表。这是一种作品,但不是我想要的。
ArticleCommand.keywords的输出是一个字符串数组,“ [technology,finance]”。我所需要的只是一个字符串“技术,金融”。
什么是处理转换关键字集的输出的好方法? Thymeleaf中是否有什么东西可以在接收到一个集合时将它们连接成一个字符串?或者也许我可以提供给Command注释,告诉它如何处理它?
您可以在百里香中使用#strings.listJoin
:https://www.thymeleaf.org/apidocs/thymeleaf/3.0.0.RELEASE/index.html?org/thymeleaf/expression/Strings.html(它似乎不允许我在该页面上锚定链接,所以只需搜索listJoin)
例如,如果您的型号名称是商品,则百里香叶可能看起来像这样:
<p th:text="${#strings.listJoin(articles.getKeywords(), ', ')}"></p>