Привязка списка к одному полю ввода - весенняя загрузка, тимелист - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь использовать систему тегов в своем приложении, где можно назначить несколько тегов, введя ввод в одно поле.Подобно тому, что мы имеем здесь, на SO.

У меня есть класс Article, который имеет Set<ArticleTag> articleTags в качестве атрибута.

Единственный способ, которым я мог бы подумать, это сделать с @RequestParam, а затем разделить String наSpring boot приложение.Мне интересно, есть ли способ, которым я могу поместить существующие значения в пользовательское поле?

Пока у меня есть фрагмент HTML ниже.

            <div th:each="tag,i: ${article.articleTags}">
                <input type="text" th:value="*{articleTags[__${i.index}__].tagName}" />
            </div>

Это приводит к следующемуview:

Tags

Edit 1

Стоит упомянуть, что у меня есть два атрибута в ArticleTagкласс - ID и tagName.Если я сделаю <input type="text" th:value="${article.articleTags}"/>, то получится список ID значений, а не tagName, что я и хочу.

Edit 2

<input th:each="arg: ${article.articleTags.value}" th:value="${arg.tagName}">

Получает следующий вид enter image description here

1 Ответ

0 голосов
/ 16 мая 2019

Переопределить toString() метод в классе ArticleTag и установить для возврата нужное значение (tagName)

@Override
public String toString() {
    return this.getTagName();
}

Затем установить список как объект и передать значение toString() в качестве значения, это вернет массив, тогда квадратные скобки могут быть удалены с помощью substring().

<input class="form-control" id="category"
                    th:object="${article.articleTags}" 
                    th:value="*{toString().substring(1, toString().length()-1)}"/>

Конечный результат

end result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...