【问题标题】:Sending HTML form data array to JSP/Servlet将 HTML 表单数据数组发送到 JSP/Servlet
【发布时间】:2012-07-31 22:58:06
【问题描述】:

我来自 PHP 世界,任何名称以方括号结尾的表单数据都会自动被解释为数组。比如:

<input type="text" name="car[0]" />
<input type="text" name="car[1]" />
<input type="text" name="car[3]" />

在 PHP 端将被捕获为名称“car”的数组,其中包含 3 个字符串。

现在,有没有办法在提交到 JSP/Servlet 后端时复制该行为?有什么图书馆可以为你做这件事吗?

编辑:

进一步扩展这个问题:

在 PHP 中,

<input type="text" name="car[0][name]" />
<input type="text" name="car[0][make]" />
<input type="text" name="car[1][name]" />

会给我一个嵌套数组。如何在 JSP 中重现这个?

【问题讨论】:

  • JSP 浮现在脑海中。
  • @Makoto 不过,这并没有解决问题; JSP 自身不进行任何类型转换。
  • 仅供参考 Java 是一个单词而不是首字母缩略词

标签: html arrays forms jsp servlets


【解决方案1】:

请求参数名称中的[] 符号是使PHP 将请求参数识别为数组的必要技巧。这在 JSP/Servlet 等其他 Web 语言中是不必要的。去掉那些括号

<input type="text" name="car" />
<input type="text" name="car" />
<input type="text" name="car" />

这样,HttpServletRequest#getParameterValues() 就可以使用它们。

String[] cars = request.getParameterValues("car");
// ...

另见:

【讨论】:

  • 有趣...而且很高兴知道。那么这就引出了下一个问题:Java 中可以有二维数组吗?喜欢car[0][make]
  • 您需要自己循环收集它们。 JSP/Servlet 不像 PHP 那样高级。最好寻找更健全的方法,或者只是像 Spring MVC 或 JSF 这样的 MVC 框架,以便自动更新模型值。
  • 我同意框架的想法,但是如果您在客户端生成更多的表单字段,那将失败。这是我正在努力解决的示例:假设您有一个捕获事件注册的表单。您可以获得所有标准字段,但可以在您的注册中添加 0 到 10 位客人。在 PHP 中,您可以让 JS 为第一个来宾生成一个 guest[0][firstname] 输入字段,为第二个来宾生成一个 guest[1][firstname] 字段。使用 Spring MVC,您必须从一开始就考虑所有 10 个客人并为所有客人提交空白数据。
  • 然后使用框架提供的工具在服务器端动态创建组件。或者只是自己循环收集它们,如之前的评论所述。
猜你喜欢
  • 2013-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 2014-07-21
  • 1970-01-01
相关资源
最近更新 更多