1

JSTL を使用して JSP ページのマップにネストされたオブジェクト/プロパティの値を出力するにはどうすればよいですか?

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

SurveyQuestions別の Bean であるというプロパティがあり、これらの質問survey.questions.getId()またはsurvey.questions.getTitle()) を出力したい場合、その<c:forEach>ステートメントはどのようになりますか?

私の場合、${survey}は ではありMapません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バインドされたオブジェクトのコレクションがあり、それぞれにタイトルがあることを前提としています。各調査のタイトルが出力されます。 surveysSurvey

ネストされたプロパティがオブジェクトのコレクションである場合、forEach例のようにループを使用してそれらを繰り返します。

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

属性にバインドされた単一のオブジェクトがあり、オブジェクトがフィールドとしてオブジェクトのコレクションを持ってQuestionいると仮定して(つまり、適切な getter メソッドを使用して) 、各 のタイトルを出力します。SurveysurveySurveyQuestiongetQuestions()

次のように、ループをネストすることもできます。

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

Surveyこれにより、 each の each のタイトルとともにeveryのタイトルが出力Questionされます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 が別のコレクション オブジェクトである場合、ループで 2 回繰り返す必要があります。例えば、

<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 に答える