0

syantaxを使用してjsp上のpojoのリストを反復しようとしてc:forEachいます。ここで問題となるのは、リストにネストされたリストが含まれているため、jspでその特定の値をどのように表示する必要があるかです。

これがjspの私のコードです:

<c:forEach items="${capQues.captureQuestionList}" var="captureQuestion" varStatus="status">
  <fieldset name="captureQuestionList[${status.index}].languageId" value="1">
    <legend><c:out value="${captureQuestion.languages}" /></legend>
    <div class="question"><textarea class="textarea" name="captureQuestionList[${status.index}].question" value="question"></textarea></div>
  </fieldset>
</c:forEach>

言語は内のリストでもありますcaptureQuestionList

前もって感謝します

4

1 に答える 1

3

ここで欠けているのはのポイントだと思いますvar。最初のループcaptureQuestionには、リストからの現在のオブジェクトが含まれますcaptureQuestionListcaptureQuestionList[${status.index}]その参照をそのまま使用できるため、オブジェクトを取得するためにを使用する必要はありません。ちなみに、これの正しい構文はです${captureQuestionList[status.index]}。したがって、フィールドセット名は。にすることができます${captureQuestion.languageId}

forループはネストすることができます。たとえば(質問オブジェクトにいくつかの仮定を立てる):

<c:forEach items="${capQues.captureQuestionList}" var="captureQuestion">
  <fieldset name="${captureQuestion.languageId}">
      <legend><c:out value="${captureQuestion.languages}" /></legend>
      <c:forEach items="${captureQuestion.questionList}" var="question">
        <div class="question">
          <textarea class="textarea" name="${question.id}"><c:out
            value="${question.value}"/></textarea>
        </div>
      </c:forEach>
  </fieldset>
</c:forEach>

属性textareaがないことに注意してください。valueその本体に値を入れてください。


編集:言語のリストを反復処理する必要がある場合は、同じ原則を使用できます。

<c:forEach items="${capQues.captureQuestionList}" var="captureQuestion">
  <fieldset name="${captureQuestion.languageId}">
      <legend>
        <c:forEach items="${captureQuestion.languages}" var="language">
          <c:out value="${language.name}" />
        </c:forEach>
      </legend>
      <div class="question">
        <textarea class="textarea" name="${captureQuestion.question}"></textarea>
      </div>
  </fieldset>
</c:forEach>

単一の言語を表示する場合は、を追加しc:ifて言語を確認します

<c:forEach items="${captureQuestion.languages}" var="language">
  <c:if test="${language.id eq captureQuestion.questionId}">
    <c:out value="${language.name}" />
  <c:if>
</c:forEach>

を使用できるように、モデルに適切な言語への参照を追加する方がよいでしょう${captureQuestion.language}

于 2012-10-05T13:56:35.210 に答える