1

如何使用 JSTL 在 JSP 页面上的地图中打印嵌套对象/属性的值?

<c:foreach items="${survey}" var="survey">
    <c:out value="${survey.value}" />
</c:foreach>

Survey有一个名为 的属性Questions,它是另一个 bean,我想打印这些问题survey.questions.getId()survey.questions.getTitle()),该<c:forEach>语句看起来如何?

就我而言,${survey}is a Mapnot a Collection

4

2 回答 2

5

如果您的嵌套属性是单个对象实例,您只需直接引用它,例如:

<c:forEach var="surveyItem" items="${surveys}">
    ${surveyItem.title} <!-- You can use the c:out if you really want to -->
</c:forEach>

这假设您有一组Survey绑定到该surveys属性的对象,并且每个对象Survey都有一个标题。它将打印每个调查的标题。

如果您的嵌套属性是对象的集合,那么您可以使用forEach循环来迭代它们,就像在您的示例中一样。

<c:forEach var="question" items="${survey.questions}">
    ${question.title} 
</c:forEach>

这将打印每个 的标题Question,假设您有一个Survey绑定到survey属性的对象,并且该Survey对象具有Question作为字段的对象集合(使用适当的 getter 方法,即getQuestions())。

您还可以使用嵌套循环,例如:

<c:forEach var="surveyItem" items="${surveys}">
    ${surveyItem.title}
    <c:forEach var="question" items="${surveyItem.questions}">
        ${question.title} 
    </c:forEach>
</c:forEach>

这将打印 everySurvey的标题以及 eachQuestion中的 each的标题Survey

如果由于某种原因你决定通过 a Map,你可以这样做:

<c:forEach var="entry" items="${surveyMap}">
    Map Key:  ${entry.key}
    Map Value:  ${entry.value}
    Nested Property:  ${entry.value.title}
    Nested Collection:
    <c:forEach var="question" items="${entry.value.questions}">
        ${question.title}
    </c:forEach>
</c:forEach>
于 2012-09-19T04:11:51.520 回答
0

如果您的 Survey.Question 是另一个集合对象,基本上您需要在循环中迭代两次。例如,

<c:foreach items="${survey}" var="survey">

    <c:out value="${survey.value}" />

    <c:foreach items="${survey.Question" var="question">
      $<c:question.item> or $<c:question.title>
     </c:foreach>
</c:foreach>
于 2012-09-19T04:18:15.510 回答