【问题标题】:How do I retrieve the values of checkboxes when the Id values are dynamically generated动态生成 Id 值时如何检索复选框的值
【发布时间】:2010-12-17 17:21:38
【问题描述】:

我根据某些文件名动态命名一组复选框(用户正在选择要包含的文件以进行某些处理)。

有没有办法可以检索文件名,或者我需要将它们保存到某种会话对象中,然后使用检索到的值(来自会话对象)来检索复选框的值。

简而言之,我真正想要的是知道哪些复选框已被单击以及它们对应的文件名,任何解决方案都可以。

【问题讨论】:

    标签: java jsp servlets checkbox


    【解决方案1】:

    您的 HTML 是什么样的?我希望像这样的复选框:

    <li><input id='0001' type='checkbox' name="files[]" value="file1"/>/xyz/file1</li>
    <li><input id='0002' type='checkbox' name="files[]" value="file2"/>/xyz/file2</li>
    <li><input id='0003' type='checkbox' name="files[]" value="file3"/>/xyz/file3</li>
    <li><input id='0004' type='checkbox' name="files[]" value="file4"/>/xyz/file4</li>
    

    name 将与提交时检查的任何值相关联。在这里,我使用了 files[],因为这是 PHP 所要求的,我没有在 servlet 中这样做。

    【讨论】:

      【解决方案2】:

      您是在做所有这些服务器端还是使用 java-script 客户端?

      如果都是服务器端,为什么不在动态命名时在名称前面加上复选框:

      <input type="checkbox" name="checkbox_someRandomeName" value="something" />
      

      然后您可以循环发布的变量并查看名称是否以“复选框”开头:

      ParameterMap paramMap = request.getParameterMap();
      // Loop through the list of parameters.
      Iterator y = paramMap.keySet().iterator();
      while (y.hasNext()) {
        String name = (String) y.next();  
        if name.startswith("checkbox"){
          // do something
        }
      }
      

      【讨论】:

      • 这是一个有趣的想法,但上述技术正如 Vinegar 所建议的那样。
      • 啊,非常有道理。我假设您使用 name 和 value 属性来存储变量信息,因此您需要保持命名结构完整。
      【解决方案3】:

      使用唯一的id,但使用相同的name。然后您将能够使用getParameterValues(name)getParameterMap()ServletRequest。请记住,您只会得到选择的内容。

      【讨论】:

      • 这也是我的第一反应。你打败了我。
      • 事实上,只要给他们同样的name 并使用getParameterValues() 访问他们。顺便说一下,这里有些 PHP 人注意到了,不需要大括号符号。
      • 最后我重构了代码并使用了 reParameterValues() 方法来获取选中复选框的列表。这就是其余代码工作所需的全部内容,所以一切都很好。谢谢。
      猜你喜欢
      • 2012-12-17
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 2014-10-02
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      相关资源
      最近更新 更多