将Collection作为请求对象从JSP传递

时间:2012-05-01 22:49:39

标签: java jsp servlets request jstl

在根据对象的状态构造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端可用的常规方法是什么?

我应该没有任何框架。

2 个答案:

答案 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上的任何属性都将不可用。

检查详细答案: Passing an object from JSP page back to Servlet