首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSP getParameter问题

JSP getParameter问题
EN

Stack Overflow用户
提问于 2010-12-28 16:42:56
回答 1查看 1.1K关注 0票数 0

我有一个表单,如果定时器到达,表单将自动重定向到Servlet来更新数据库。我现在的问题是,如果javascript将窗口重定向到servlet,我的request.getParameter为空。

代码语言:javascript
复制
function verify(f,whichCase){
if(whichCase == "Submit"){
    msg = "Are you sure that you want to submit this test?";
    var i = confirm(msg)
    if(i){
        parent.window.location = "sindex.jsp"
    }
   return i;
 }
}

我这样做是因为我的jsp中有一个iframe。计时器更新问题必须使用iframe。因此,当时间到或用户单击submit时,parent.window.location可以让我刷新父窗口

代码语言:javascript
复制
<form method="POST" action="${pageContext.request.contextPath}/TestServlet" onSubmit="return verify(this,whichPressed)">

我的表单当用户点击提交按钮的时间内,它会触发验证功能,让用户确认提交。所以在我的TestServlet中,我得到了这个,因为使用javascript redirect request.getParameter("answer")这个keep会返回null。

代码语言:javascript
复制
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
if (request.getParameter("Submit") != null) {
   String ans = request.getParameter("answer");
   Answer a = new Answer(ans, no);
   aa.CreateAnswer(an,t.getTestCode(),username);
   RequestDispatcher rd = request.getRequestDispatcher("/sindex.jsp");
   rd.forward(request, response);
  }
}

下面是time up重定向到TestServlet触发doGet方法时的计时器

代码语言:javascript
复制
if((mins == 0) && (secs == 0)) {
window.alert("Time is up. Press OK to submit the test."); // change timeout message as required
var sUrl = "TestServlet";
parent.window.location = sUrl // redirects to specified page once timer ends and ok button is pressed
} else {
  cd = setTimeout("redo()",1000);
}
EN

回答 1

Stack Overflow用户

发布于 2010-12-28 17:01:00

我不确定我是否理解了这个问题,但我认为您的问题在这里:

代码语言:javascript
复制
if((mins == 0) && (secs == 0)) {
window.alert("Time is up. Press OK to submit the test."); // change timeout message as required
var sUrl = "TestServlet";
parent.window.location = sUrl // redirects to specified page once timer ends and ok button is pressed
} else {
  cd = setTimeout("redo()",1000);
}

您正在重定向到TestServlet,但您没有发送任何参数,因为您没有提交表单。尝试如下所示:

代码语言:javascript
复制
    if((mins == 0) && (secs == 0)) {
    window.alert("Time is up. Press OK to submit the test."); // change timeout message as required
    var sUrl = "TestServlet";
    //myform it's a variable pointing to your form
    myform.submit();
    } else {
      cd = setTimeout("redo()",1000);
    }

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4544762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档