2013-04-11 125 views
0

我使用单选按钮提交表单。我希望在提交表单后检查单选按钮。基本上我正在页面上进行一些搜索过程。请检查代码。在jsp/servlet中提交表单后的单选按钮选择

在我的jsp上。

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
     <% 
       String buttonvalue = (String) request.getParameter("radio"); 
     %> 
     <%= buttonvalue %> 

     <form method="post" action="SearchServlet"> 

      <script type='text/javascript'> 
      var button = "<%= buttonvalue %>"; 
      if(button == "one") 
      { 
       alert("1"); 
       document.getElementById("rdone").checked = true; 
       document.getElementById("rdtwo").checked = false; 
       document.getElementById("rdthree").checked = false; 
      } 
      else if(button == "two") 
      { 
       document.getElementById("rdone").checked = false; 
       document.getElementById("rdtwo").checked = true; 
       document.getElementById("rdthree").checked = false; 
      } 
      else if(button == "three") 
      { 
       alert("3"); 
       document.getElementById("rdone").checked = false; 
       document.getElementById("rdtwo").checked = false; 
       document.getElementById("rdthree").checked = true; 
       alert("2"); 
      } 
      else 
      { 
        alert("4"); 
      } 
     </script> 

      <input id="rdone" type="radio" name="radio" value="one"/> 
      <input id="rdtwo" type="radio" name="radio" value="two"/> 
      <input id="rdthree" type="radio" name="radio" value="three"/> 
      <input type="submit" value="Submit"/> 
     </form> 
    </body> 
</html> 

和在Servlet中。

protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
     response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 
     try 
     { 
      System.out.println(request.getParameter("radio")); 
      RequestDispatcher dispatcher = request.getRequestDispatcher("/radiobutton.jsp"); 
      System.out.println("--------------"+request.getParameter("radio")); 
      dispatcher.forward(request, response); 
     } 
     finally 
     {    
      out.close(); 
     } 

    } 

所有工作正常。但我得到的Java脚本错误。请检查以下屏幕截图。由于这个Java脚本我没有得到确切的输出。

enter image description here

+2

* *危险**:您正在将URL中的数据直接输出到页面中。这使你容易受到[XSS攻击](http://en.wikipedia.org/wiki/Cross-site_scripting)的影响。 – Quentin 2013-04-11 10:05:57

回答

1

你的脚本之前的单选按钮出现,而不是由该被延迟,直到后来的函数。

您试图在按钮存在之前对其进行修改。

将脚本移动到HTML源代码中的按钮之后。

+0

准确答案。谢谢。 – KSHiTiJ 2013-04-11 10:07:40

0

我想建议你,当你的JSP页面提交您可以使用下面的代码处理它的servlet:

protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
     { 
      response.setContentType("text/html;charset=UTF-8"); 
      PrintWriter out = response.getWriter(); 
      try 
      { 
       System.out.println(request.getParameter("radio")); 
if(request.getParameter("radio")!= "" || request.getParameter("radio")!=null){ 
request.setAttribute("radio"); 
} 
       RequestDispatcher dispatcher = request.getRequestDispatcher("/radiobutton.jsp"); 
       System.out.println("--------------"+request.getParameter("radio")); 
       dispatcher.forward(request, response); 
      } 
      finally 
      {    
       out.close(); 
      } 

     } 

现在在你的JSP文件中添加以下行:

<input id="rdone" type="radio" name="radio" value="one" <%=((request.getAttribute("radio")!=null && request.getAttribute("radio").toString().equals("one")) ? "checked" : "")%> /> 
<input id="rdtwo" type="radio" name="radio" value="two" <%=((request.getAttribute("radio")!=null && request.getAttribute("radio").toString().equals("two")) ? "checked" : "")%> /> 
<input id="rdthree" type="radio" name="radio" value="three" <%=((request.getAttribute("radio")!=null && request.getAttribute("radio").toString().equals("three")) ? "checked" : "")%> /> 
相关问题