创建一个应用程序时遇到问题。例如,我有一个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事件。
任何想法为什么?
答案 0 :(得分:0)
如果我在JSP页面中使用RequestDispatcher,我会收到异常
cannot forward after responce has been commited
作为视图技术的JSP隐含地是HTTP响应的一部分。 JSP中的每个模板行都写入响应。为了能够更改响应,响应应该完全不受影响并且为空白。但在JSP中并不一定是这种情况。
将该Java代码移动到将在JSP之前运行的操作或servlet类。无论如何,Java代码doesn't都属于JSP文件。