我认为您在这里缺少的是var 的要点。在您的第一个循环中,captureQuestion 将是来自列表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}。