У меня проблема с созданием одного приложения.Например, у меня есть список или массив строк - это вопросы.У меня есть страница с сервлетами и JSP, на странице JSP есть кнопка «Далее», когда один вопрос должен быть напечатан в 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);
}
}
}
%>
Проблема в том, что я не могу.Если я использую RequestDispatcher
на странице JSP, я получаю исключение
не может переслать после того, как ответ был передан
Если я пытаюсь получить доступ к сервлету с помощью jQuery, все в порядке, ноRequestDispacher
не работает, и я не могу перенаправить на другое событие JSP из сервлета.
Есть идеи почему?