如何检查带有动态名称的参数/集合是否存在?

时间:2018-06-30 01:56:08

标签: java spring jsp el

在我的控制器中,我将动态调用的属性添加到模型中,例如:

model.addAttribute("message"+singleMessage.getId()+"comments", messageComments);

所以在我的jsp视图中,我有诸如message1comments,message7comments,message457comments等的集合。

现在,当我显示带有id的消息时,我要进行消息收集时,假设19我想通过检查是否存在诸如“ message19comments”之类的属性/集合来检查是否有任何注释。

问题是:该怎么做?我不知道如何构造这样的名称,并检查是否存在具有该名称的参数。我尝试过:

<c:if test="${not empty "message"+message.id+"comments"}>

和其他一些东西,但无济于事。当我打印

${requestScope}

我可以看到所有这些评论集。但是,如何检查具有动态生成名称的名称是否存在?

1 个答案:

答案 0 :(得分:1)

通过Map<messageId, listOfComments>,您可以通过提供消息ID来轻松调用与任何消息相关的注释列表,因此您可以尝试将Map放入模型中,如以下代码示例所示(通过您的数据类型):

Map<Long, List<Comment>> commentMap = new HashMap<>();
for (Message singleMessage : messages) {
  /* retrieve messageComments for this singleMessage here */
  commentMap.put(singleMessage.getId(), messageComments);
}
model.addAttribute("commentMap", commentMap);

然后,在JSP中,您可以调用带有消息ID的注释列表:

<c:if test="${not empty commentMap[YOUR_MESSAGE_ID_HERE]}>

另请参见Get value from hashmap based on key to JSTL