在根据对象的状态构造JSP页面之前,我有一个对象(集合)。
Map<Integer, QuestionBO> questionsIdsMap = new TreeMap<Integer, QuestionBO>();
for (QuestionBO question : questionsForSubject) {
questionsIdsMap.put(question.getQuestionId(), question);
}
request.setAttribute("questionsForSubject", questionsIdsMap);
然后我对表单进行一些操作,并将整个页面提交回servlet进行处理。
<jsp:useBean id="questionsForSubject" class="java.util.Map" scope="request"/>
<c:if test="${not empty questionsForSubject}">
<form action="/TutorWebApp/controller" method="POST" name="addQuestionForm">
<input type="hidden" name="command" value="add_question_list" />
<input type="hidden" name="testName" value="${testName}"/>
<input type="hidden" name="questionsForSubject" value="${questionsForSubject}"/>
<table border ="1">
<tbody>
<c:forEach items="${questionsForSubject.keySet()}" var="questionID">
<tr>
<td>
<input type="checkbox" name ="choosen_question" value="${questionID}">
${questionsForSubject.get(questionID).getQuestion()}
<br />
</td>
</tr>
</c:forEach>
</tbody>
</table>
<input type="submit" value="Add questions"/>
</form>
</c:if>
传递前面提到的集合以使其在servlet端可用的常规方法是什么?
我应该没有任何框架。
答案 0 :(得分:0)
因为你已经使用过
request.setAttribute("questionsForSubject", questionsIdsMap);
您不需要使用jsp:useBean标记 要显示,请尝试
<c:forEach items="${questionsForSubject}" var="current">
<tr>
<td>
<input type="checkbox" name ="choosen_question" value="${current.key}">
${current.value}
<br />
</td>
</tr>
</c:forEach>
答案 1 :(得分:0)
创建JSP的请求以及在提交JSP时生成的请求是完全不同的请求,当您调用servlet时,JSP上的任何属性都将不可用。