有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

在我的控制器中,我向模型中添加了动态属性,如:

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

所以在我的jsp视图中,我有一些集合,比如message1comments、message7comments、message457comments等等

现在,当我查看messages collection时,当我显示一条id为19的消息时,我想通过检查诸如“message19comments”这样的属性/集合是否存在来检查它是否有任何注释

问题是:怎么做?我不知道如何构造这样一个名称,并检查是否存在使用此名称的参数。我试过:

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

还有其他一些事情,但都没用。当我打印的时候

${requestScope}

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


共 (1) 个答案

  1. # 1 楼答案

    通过提供消息ID,Map<messageId, listOfComments>可以让您轻松地回忆与任何消息相关联的注释列表,因此您可以尝试在模型中放置一个映射,如下面的代码示例所示(使用数据类型进行调整):

    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了解更多信息