【发布时间】:2011-09-13 14:41:32
【问题描述】:
我在创建一个应用程序时遇到问题。例如,我有一个字符串行列表或数组 - 这些是问题。我有一个 servlet 和 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);
}
}
}
%>
问题是我做不到。如果我在 JSP 页面中使用 RequestDispatcher 我会得到一个异常
提交响应后无法转发
如果我尝试使用 jQuery 访问 servlet,一切正常,但 RequestDispacher 不起作用,我无法从 servlet 重定向到其他 JSP 事件。
任何想法为什么?
【问题讨论】:
-
你尝试了吗?展示你的所作所为,它会更容易为你提供帮助。