【问题标题】:send multiple checkbox value in loop to servlet在循环中将多个复选框值发送到 servlet
【发布时间】:2020-12-01 01:33:33
【问题描述】:

我有一个带有 doget() 的 servlet 类,它使用 for 循环来填充各种用户的复选框。例如,它将使用复选框读取填充用户 Rahul,并根据某些标准执行,它将使用复选框完全控制填充用户 Subh,其余框保持未选中状态。现在网页上的用户取消选中或选中每个用户的框以对其进行修改。现在我应该如何将每个用户的更改复选框值传递给不同的函数。

for(int i=0;i<len;i++)
       {
         String[] parts = prop[i].split("\\\\");
         arr[i] = parts[0];
         pw.println("<tr><td>");
         pw.println(parts[0]+"\\ "+parts[1]);       //user's firstname\lastname
         pw.println("</td><td>");
         if(parts[2].contains("Full Control"))
         {
             pw.println("<label><input type='checkbox' value='FullControl' checked='checked'/>Full Control </label>"
                    + "<label><input type='checkbox' value='Read' checked='checked'/>Read </label>"
                    + "<label><input type='checkbox' value='Write' checked='checked'/>Write </label>"
                    + "<label><input type='checkbox' value='Execute' checked='checked'/>Execute</label>");
         } 
         else
         {
            pw.println("<label><input type='checkbox' value='FullControl'/>Full Control</label>");
            if(parts[2].contains("Read")){
                pw.println("<label><input type='checkbox' value='Read' checked='checked'/>Read</label>");
            }
            if(parts[2].contains("Execute")) {
                pw.println("<label><input type='checkbox' value='Execute' checked='checked' />Execute</label>");
            }
            if(parts[2].contains("Write")) {
                pw.println("<label><input type='checkbox' value='Write' checked='checked' />Write</label>");
            }
         }

我想在方法 modifyPermission(firstname, checkboxValue, allow\deny) 中传递此详细信息,以便为每个用户针对每个权限进行修改。像这样的

obj.modifyACL(username, accessType, allow\deny);

【问题讨论】:

    标签: java html servlets checkbox


    【解决方案1】:

    您需要创建一个围绕复选框的 HTML“表单”。为每个复选框添加不同的 name 属性。并添加一个用户可以按下以发送表单的按钮。

    生成的 HTML 应如下所示:

    <form action="modifyAcl" method="post">
    <label><input type='checkbox' name="fullControl" value='FullControl' checked='checked'/>Full Control</label>
    ...all your other checkboxes...
    
    <input type="submit" value="Modify ACL" />
    </form>
    

    当用户按下按钮时,浏览器会将表单元素的值在 POST 请求中发送回服务器

    Servlet 然后会在doPost 方法中接收请求。在此方法中,您从请求参数中提取表单数据,然后调用您的 modifyACL 方法。

    public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      boolean fullControlChecked =  "FullControl".equals(request.getParameter("fullControl"));
      // extract other information to set the obj, username, accessType, and allowDeny variables
    
      obj.modifyACL(username, accessType, allowDeny);
    }
    

    【讨论】:

    • 我也试过了。我为每个用户提供了 name 属性值作为 firstname+Fullcontrol 并且它起作用了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 2020-05-31
    • 2016-04-19
    相关资源
    最近更新 更多