【问题标题】:Pass Collection as request object from JSP将 Collection 作为请求对象从 JSP 传递
【发布时间】:2012-05-01 22:49:39
【问题描述】:

我有一个对象(集合),我在根据对象的状态构造 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 端可用的传统方法是什么?

我应该在没有任何框架的情况下这样做。

【问题讨论】:

    标签: java jsp servlets request jstl


    【解决方案1】:

    既然你用过

    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>
    

    【讨论】:

      【解决方案2】:

      创建 JSP 的请求和提交 JSP 时生成的请求是完全不同的请求,并且在调用 servlet 时,放置在 JSP 上的任何属性都将不可用。

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

      【讨论】:

      • 我看到了这篇文章。我试图将值放在 jsp 上作为代码 request.getSession().setAttribute("questionsForSubject") 代码,并在 servlet 上将此值作为代码 request.getSession().getAttribute("questionsForSubject") 代码。但在这种情况下,值对象等于 NULL。
      猜你喜欢
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 2022-12-19
      • 1970-01-01
      相关资源
      最近更新 更多