如何在JSP页面上的地图中打印嵌套对象/属性的值?
<c:foreach items="${survey}" var="survey">
<c:out value="${survey.value}" />
</c:foreach>
那么让我们说Survey有一个名为Questions的属性(这是另一个对象),我想打印那些问题(survey.questions.getId()或survey.questions.getTitle()),那个foreach语句看起来怎么样?
编辑:调查是地图而不是集合
答案 0 :(得分: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>
这将打印每个Survey
的标题以及每个Question
中每个Survey
的标题。
如果由于某种原因你决定通过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>
答案 1 :(得分: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>