在同一个JSP页面中提问

时间:2011-09-13 14:41:33

标签: jsp servlets struts

创建一个应用程序时遇到问题。例如,我有一个List或Array字符串行 - 这些都是问题。我有一个servlet和JSP页面,在JSP页面中有一个按钮“next”,当按下下一个按钮时,一个问题必须在JSP中打印。

请告诉我如何才能完成这项工作。

我有一个struts动作类,其中我有我的代码来提出问题:

public class SecondWriteAction extends Action {

    /**
     * 
     */
    private static final String SUCCESS = "success";

    /**
     *
     */
    protected int count = 0;

    /**
     * 
     */
    protected Collection<QuestionsBean> questionsBeansCollection = new ArrayList<QuestionsBean>();

    /**
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        HttpSession session = request.getSession();

        if (session.getAttribute("questioningTimeCount") == null){
            session.setAttribute("questioningTimeCount", request.getParameter("timeCount"));
        }

        int timeCount = Integer.parseInt(session.getAttribute("questioningTimeCount").toString());

        WriteFormBean formBean = (WriteFormBean) form;
        QuestionsBean questionsBean = new QuestionsBean();

        questionsBean.setSentence(formBean.getQuestion());
        questionsBeansCollection.add(questionsBean);

        if (session.getAttribute("countFromJsp") != null) {
            int countFromJsp = Integer.parseInt(session.getAttribute("countFromJsp").toString());

            if (countFromJsp == 1){
                session.setAttribute("questionsBeansCollection", questionsBeansCollection);
            }

            if (countFromJsp <= 0) {
                questionsBeansCollection.clear();
                questionsBeansCollection = new ArrayList<QuestionsBean>();
                count = 0;
            }
        }

        QuestionsHandler handler = QuestionsHandler.getInstance(request.getSession().getServletContext().getRealPath("/data/sentences_" + timeCount));

        count = count + 1;
        request.setAttribute("question", handler.getQuestions().get(count));
        request.setAttribute("count", count);

        RequestDispatcher rd = request.getRequestDispatcher("/student/secondWrite.jsp");
        rd.forward(request, response);

        return mapping.findForward(SUCCESS);
    }
}

在JSP页面中我统计它们,当提问结束时,我正在尝试转发到JSP页面。

<%
    if (request.getAttribute("count") != null){

        int count = 11 - Integer.parseInt(request.getAttribute("count").toString());
        out.print("<p>Liko klausimų: " + count + "</p>");
        session.setAttribute("countFromJsp", count);
        if (count == 0){                                            
            if (Integer.parseInt(session.getAttribute("questioningTimeCount").toString()) > 1){                                                
                %>
                <script type="text/javascript">
                        $.post('update', function(data) {});
                </script>                                                
                <%                                                                                                
            } else {   
                //response.sendRedirect("content/informantForm.jsp");                                                                                          
                //RequestDispatcher rd = request.getRequestDispatcher("/content/informantForm.jsp");
                //rd.forward(request, response);
            }
        }
    }
%>

问题是我做不到。如果我在JSP页面中使用RequestDispatcher,我会得到一个异常

  提交响应后,

无法转发

如果我尝试使用jQuery访问servlet,那么一切正常,但RequestDispacher不起作用,我无法从servlet重定向到其他JSP事件。

任何想法为什么?

1 个答案:

答案 0 :(得分:0)

  

如果我在JSP页面中使用RequestDispatcher,我会收到异常

cannot forward after responce has been commited

作为视图技术的JSP隐含地是HTTP响应的一部分。 JSP中的每个模板行都写入响应。为了能够更改响应,响应应该完全不受影响并且为空白。但在JSP中并不一定是这种情况。

将该Java代码移动到将在JSP之前运行的操作或servlet类。无论如何,Java代码doesn't都属于JSP文件。