将 HTML 表单数据数组发送到 JSP/Servlet
Posted
技术标签:
【中文标题】将 HTML 表单数据数组发送到 JSP/Servlet【英文标题】:Sending HTML form data array to 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 是一个单词而不是首字母缩略词 【参考方案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");
// ...
另见:
Send an Array with an HTTP Get【讨论】:
有趣...而且很高兴知道。那么这就引出了下一个问题:Java 中可以有二维数组吗?喜欢car[0][make]
?
您需要自己循环收集它们。 JSP/Servlet 不像 PHP 那样高级。最好寻找更健全的方法,或者只是像 Spring MVC 或 JSF 这样的 MVC 框架,以便自动更新模型值。
我同意框架的想法,但是如果您在客户端生成更多的表单字段,那将失败。这是我正在努力解决的示例:假设您有一个捕获事件注册的表单。您可以获得所有标准字段,但可以在您的注册中添加 0 到 10 位客人。在 PHP 中,您可以让 JS 为第一个来宾生成一个 guest[0][firstname] 输入字段,为第二个来宾生成一个 guest[1][firstname] 字段。使用 Spring MVC,您必须从一开始就考虑所有 10 个客人并为所有客人提交空白数据。
然后使用框架提供的工具在服务器端动态创建组件。或者只是自己循环收集它们,如之前的评论所述。以上是关于将 HTML 表单数据数组发送到 JSP/Servlet的主要内容,如果未能解决你的问题,请参考以下文章