首页 > 解决方案 > 将列表绑定到单个输入字段 - spring boot thymeleaf

问题描述

我正在尝试在我的应用程序中使用标签系统,可以通过在单个字段中输入输入来分配多个标签。类似于我们在 SO 的情况。

我有一个作为属性的Article类。Set<ArticleTag> articleTags

我能想到的唯一方法是使用然后@RequestParam拆分应用程序。我想知道,有没有办法可以将现有值放在自定义字段中?StringSpring boot

到目前为止,我已经得到了HTML下面的片段。

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

这会产生以下视图:

标签

编辑 1

值得一提的是,我在ArticleTag类中有两个属性 - IDtagName. 如果我做 a <input type="text" th:value="${article.articleTags}"/>,这会产生一个ID值列表 not tagName,这就是我所追求的。

编辑 2

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

实现如下视图在此处输入图像描述

标签: thymeleaf

解决方案


覆盖类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)}"/>

最终结果

最终结果


推荐阅读