繁体   English   中英

如何将表的单选按钮值从一个jsp传递到另一个

[英]How to pass a radio button value of a table from one jsp to another

我有2个JSP页面i.adminhome.jsp ii.deletecontroller.jsp

adminhome.jsp显示客户端表

我希望管理员根据需要从客户端表中删除特定行。 所以我需要使用一个单选按钮从客户端表中选择clientid,然后按“删除”按钮删除该选定行

但是由于无法将所选的clientid值作为会话变量传递给deletecontroller页面,因此无法获得所需的输出。 因此,我得到空值。

这是2页的代码

1. adminhome.jsp

<%
try
{
Connection conn=null;
Statement stmt=null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection("jdbc:odbc:xyz","sa","pass");
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("Select UserID,Username,Location,Gender,EmailID from Client");

while(rs.next()){%>


<table border="1" align="center" >
    <tr>
        <td><input name="district" type="radio"  value="<%=rs.getString("UserID") %>" required="true"/></td>
        <td><%=rs.getString("Username") %></td>
        <td><%=rs.getString("Location") %></td>
        <td><%=rs.getString("Gender") %></td>
        <td><%=rs.getString("EmailID") %></td>


        <%  
            String x = request.getParameter("district");
            session.setAttribute("userid", x);
        %>




        <td><input type="submit" name="btn1" value="Delete"></td>

    </tr>
</table>

        </div>

        <br/><br/>



<%}
}
catch(Exception e){e.printStackTrace();}

%></form>

2.删除控制器.jsp

<%@ page import="java.util.*" %>
<%@ page language="java" import="java.sql.*" errorPage="" %>
<%
    String x=session.getAttribute( "userid" ).toString();
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con = DriverManager.getConnection("jdbc:odbc:xyz;","sa","pass");

    Statement stmt=null;
    stmt = con.createStatement();

    String del="Delete from Client where UserID='"+x+"' ";
    stmt.executeUpdate(del);

    response.sendRedirect("index.jsp");



%>

让我们来看一下代码的作用

 <td><input name="district" type="radio"  value="<%=rs.getString("UserID") %>" required="true"/></td>
...
<%  
 String x = request.getParameter("district");
 session.setAttribute("userid", x);
%>

您正在输出带有表单域的HTML表单。 同时,您正在从请求中读取分区并将其保存到会话中。 由于区不在请求中,因此您正在读取NULL,并将NULL保存在会话中。 您现在输出表单时,请求中的情况如何? 在您将表单输出给用户之前,用户无法提交表单,可以吗?

然后,当您提交表单时,在servlet中,您正在从会话中读取:

String x=session.getAttribute( "userid" ).toString();

您正在读取构建表单时保存到会话中的NULL。 您没有在阅读用户实际提交的表单。

你应该怎么做? 从servlet中的请求中读取:

String x = request.getParameter("district");

当用户提交表单时,将生成带有参数区的请求,因此该请求将被发送到servlet,您应该从那里读取请求。

或者,另一种方法是从rs.getString("UserID")保存到会话:

<% 
  session.setAttribute("userid", rs.getString("UserID")); 
%>

那可能就是您想要的,因为UserID可能应该是会话范围而不是请求,并且您不希望用户更改表单中的userid并进行操作。 然后,您仍然可以从Servlet中的会话中读取信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM