如何使用JSTL打印嵌套对象? [英] How to print nested objects using JSTL?

查看:35
本文介绍了如何使用JSTL打印嵌套对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

<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}Map而不是Collection

推荐答案

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

<c:forEach var="surveyItem" items="${surveys}">
    ${surveyItem.title} <!-- You can use the c:out if you really want to -->
</c:forEach>
假设您有一个绑定到surveys属性的Survey对象集合,并且每个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的标题以及每个Survey中每个Question的标题。

如果您出于某种原因决定传递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>

这篇关于如何使用JSTL打印嵌套对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆