在singletonlist中发送elementcollection

时间:2016-10-18 06:13:15

标签: java jpa spring-boot thymeleaf

我需要将评论元素发送给HTML。

没有comment DTO,实际上是TaskComment。我在Task类中定义了

    @ElementCollection
private Set<TaskComment> comments;

Ins taskcomment,因为它是model类,有一些属性,如:

 private String message;

public String getUser() {
        return user;
    }

private ZonedDateTime createdAt = ZonedDateTime.now();

private String createdAtString;

我将params定义为

 Map<String, Object> params = prepareParams(task);

我把评论放在这里:

params.put("commentsAdded", Collections.singletonList(comment));

没有任何问题,我可以看到我的HTML:

<tbody>
    <tr th:each="addedComment : ${commentsAdded}">
        <td th:text="${addedComment.user}">user...</td>
        <td th:text="${addedComment.message}">message ...</td>
    </tr>    </tbody>

我不知道为什么我们使用每个,只有一个评论对象。

但是当我想放置comment的elementcollection时,它会给出错误。

@ElementCollection
private Set<TaskComment> comments;

我试过这个

params.put("commentsInTask",new ArrayList(Arrays.asList(task.getComments())));

但是在html中

<tr th:each="addedComment : ${commentsInTask}">
    <td th:text="${addedComment.user}">user...</td>
    <td th:text="${addedComment.message}">message ...</td>

代表

<td th:text="${addedComment.user}">user...</td>

该行给出了错误。我认为它在错误后停止,可能也会给其他林错误。

我试图放singletonMap,但它不是hashmap。这是集合。

我试图把

 params.put("commentsInTaskk",new ArrayList(Arrays.asList(task.getComments())));

但我无法使其发挥作用。我认为它会起作用。或者我做错了。

你有什么建议?

我使用spring boot + intellij。

例如,当我在html

中使用它时
<tr th:each="addedComment : ${commentsInTask}">
        <td th:text="${addedComment.key}">key ...</td>
        <td th:text="${addedComment.value.user}">value.user...</td>

错误是:

  

org.thymeleaf.exceptions.TemplateProcessingException:异常   评估SpringEL表达式:“addedComment.key”   (task_comment_cta:29)

1 个答案:

答案 0 :(得分:1)

我确实喜欢这个并且工作

<tr th:each="allComments : ${commentsInTask}">
<tr th:each="comment : ${allComments}">
    <td th:text="${comment.user}">user ...</td>