0

我正在尝试使用c:forEachsyantax 迭代 jsp 上的 pojos 列表。现在的问题是列表包含一个嵌套列表,那么我应该如何在 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>

其中languages也是一个列表里面captureQuestionList

提前致谢

4

1 回答 1

3

我认为您在这里缺少的是var. 在您的第一个循环captureQuestion中,将是来自 list 的当前对象captureQuestionList。您可以按原样使用该引用,因此您不需要使用captureQuestionList[${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 回答