2012-09-19 123 views
1

如何打印JSP頁面上地圖上的嵌套對象/屬性的值?JSTL打印嵌套對象

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

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

</c:foreach> 

所以我們可以說調查有一個屬性叫做問題(這是另一個對象),我想打印這些問題(survey.questions.getId()或survey.questions.getTitle()),如何將這項foreach語句看起來如何?

編輯:調查是地圖,而不是一個集合

+1

請更改您的問題。 「調查」是列表,地圖嗎? – adatapost

回答

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對象作爲一個字段的集合(與合適的吸氣劑的方法,即getQuestions())。

你也可以有嵌套的循環,如:

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

,將與各Question在每個Survey標題一起打印每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> 
+0

如果調查是一張地圖,你可以改變這種情況嗎? – Robert

+0

@Robert - 是的,已更新。 – aroth

+0

非常感謝 – Robert

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>