Автоматически конвертировать HashSet в сцепленную строку в Spring Boot - PullRequest
0 голосов
/ 17 апреля 2020

Я довольно новичок в Spring Boot и в настоящее время работаю над формой для CMS для создания статьи. В статье есть ключевые слова, которые похожи на систему тегов SO. Пока это простой список ключевых слов через запятую. Тем не менее, я сталкиваюсь с проблемой при попытке использовать тимелист для преобразования моего объекта 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();
    }
}

Как вы можете видеть, я добавил метод toString () к ArticleKeywordCommand, чтобы получить форму, которая выводит значение ключевых слов в поле ввода. , содержат значения в виде списка через запятую. Это ... вроде работает, но это не то, что я ищу.

Вывод ArticleCommand.keywords представляет собой массив строк "[technology, finance]". Вместо этого мне нужна строка «технология, финансы».

Какой хороший способ обработки преобразования набора ключевых слов? Есть ли что-то в Thymeleaf для конкатенации значений в строку при получении набора? Или, может быть, аннотацию, которую я мог бы предоставить Команде, которая объясняет, как с ней обращаться?

1 Ответ

1 голос
/ 17 апреля 2020

Вы можете использовать #strings.listJoin в пределах thymeleaf: https://www.thymeleaf.org/apidocs/thymeleaf/3.0.0.RELEASE/index.html?org / thymeleaf / expression / Strings. html (похоже, я не могу привязать ссылку на этой странице, поэтому просто выполните поиск для listJoin)

Например, если ваша модель называется article, лист тимьяна может выглядеть примерно так:

<p th:text="${#strings.listJoin(articles.getKeywords(), ', ')}"></p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...