将列表绑定到单个输入字段-spring boot thymeleaf

时间:2019-05-15 22:07:26

标签: thymeleaf

我正在尝试在应用程序中使用标签系统,在该系统中,可以通过在单个字段中输入输入来分配多个标签。类似于我们在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>

这将产生以下视图:

Tags

  

编辑1

值得一提的是,我在ArticleTag类中有两个属性-IDtagName。如果我执行<input type="text" th:value="${article.articleTags}"/>,这将生成ID值而不是tagName的列表,这就是我想要的。

  

编辑2

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

达到以下视图enter image description here

1 个答案:

答案 0 :(得分:0)

覆盖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