在我的控制器中,我将动态调用的属性添加到模型中,例如:
model.addAttribute("message"+singleMessage.getId()+"comments", messageComments);
所以在我的jsp视图中,我有诸如message1comments,message7comments,message457comments等的集合。
现在,当我显示带有id的消息时,我要进行消息收集时,假设19我想通过检查是否存在诸如“ message19comments”之类的属性/集合来检查是否有任何注释。
问题是:该怎么做?我不知道如何构造这样的名称,并检查是否存在具有该名称的参数。我尝试过:
<c:if test="${not empty "message"+message.id+"comments"}>
和其他一些东西,但无济于事。当我打印
${requestScope}
我可以看到所有这些评论集。但是,如何检查具有动态生成名称的名称是否存在?
答案 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]}>