在 Spring MVC 中使用一系列项目处理表单发布

2024-05-07

我正在尝试将一些数据从客户端发送到服务器,并将其处理为文件下载。 我使用简单的 HTML 表单,因为我想初始化文件下载(而不是 AJAX)。 其中一个表单字段是一组项目。 (另外两个是名称和描述字符串)。 在提交表单之前,我将此字段序列化为字符串 (JSON.stringify)。

在服务器端,我尝试了一百万种技术(@ModelAttribute 与@RequestBody,不同的 Jackson 映射 bean 配置),将其转换为单一类型或三种单独的类型(String + String + List/Array)。

我找到的例子仅适用于 AJAX... 谁能提供一个工作示例或一个示例的描述?

=======

更新: 我已经通过 JSON.stringify-ing 集合并将其传递到其中一个输入来实现一种解决方法, 在服务器端我有:

@RequestMapping(method = RequestMethod.POST, value = "exportSectionsToExcel")
  public HttpEntity<byte[]> createExcelWorkBook(@ModelAttribute ExportSectionsListForm exportSectionsListForm) {
Section[] sectionObjects = gson.fromJson(exportSectionsListForm.getSections(), Section[].class);
...

使用仅包含字符串的 ExportSectionsListForm 对象:

public class ExportSectionsListForm {
private String name;
private String url;
private String rssUrl;
private String sections;
...
(omitting ctor, getters and setters)

另外,我发现了这个有希望的链接:http://viralpatel.net/blogs/spring-mvc-multi-row-submit-java-list/ http://viralpatel.net/blogs/spring-mvc-multi-row-submit-java-list/但没有尝试 - 似乎我需要动态生成输入元素才能使其工作,但它实际上可能是正确的解决方案。有人试过这个吗?


@ModelAttribute 标签将尝试根据表单发布构建对象。由于您要将表单值序列化为 JSON,因此这不起作用。 @RequestBody 只是为您提供一个表示请求正文的字符串。因此,您可以获取表示传入 JSON 的字符串,然后使用 FlexJSON 的 Jackson(或您使用的任何 JSON 库)对 JSON 进行解组。但我不确定这是最好的方法。

我想问为什么你需要首先将表单序列化为 JSON。 Spring 可以很好地处理带有列表/映射的表单。只需使用 @ModelAttribute 提交表单,在控制器上制作您的“数组”和列表,或者您期望的任何内容。因此,如果我正确解释您的示例,我的 ModelAttribute 将如下所示:

public class ExportSectionsFormBean {
  private String name;
  private String url;
  private String rssUrl;
  private List<String> sections;
  /* getters/setters */
}

那么我的控制器方法将如下所示:

@RequestMapping(method = RequestMethod.POST, value = "exportSectionsToExcel")
public HttpEntity<byte[]> createExcelWorkBook(@ModelAttribute ExportSectionsFormBean exportSectionsFormBean ) {
  /* Do whatever with your  */
}

在表单方面,使用 Spring JSTL 标签,只需使“sections”字段看起来像:

<form:input path="sections[0]" />
<form:input path="sections[1]" />

或者,如果您更愿意使用 HTML,那么

<input type="text" name="sections[0]" id="sections0" />
<input type="text" name="sections[1]" id="sections1" />

这是由上面的 JSTL 标签生成的。只要将“sections”的值作为“部分[#]=值',你们都准备好了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Spring MVC 中使用一系列项目处理表单发布 的相关文章

随机推荐

  • 通过 WooCommerce 中的管理员编辑订单自动添加或更新自定义费用

    我们有一个特殊情况 我们会在收到订单后向客户开具付款发票 而不是让他们在结账时付款 运费是手动计算的并添加到订单中 然后我们在总额中添加 3 的信用卡费用 为了自动化此过程 我创建了一个脚本 一旦通过后端设置了运费 该脚本就会计算 3 的费
  • 在类中调用类方法

    我意识到这可能是一个幼稚的问题 但我仍然无法弄清楚如何在 Ruby 类中从另一个方法调用一个方法 即在 Ruby 中可以执行以下操作 class A def met1 end def met2 met1 call to previously
  • JavaScript随机生成0或1个整数[重复]

    这个问题在这里已经有答案了 当我编写脚本来填充数据库时 我试图生成随机 0 或 1 如果是1 我会将其保存为男性 反之亦然 将其保存为0 在我的 JavaScript 中 Math floor Math random 1 1 我用它来生成
  • 将自定义文件与我的 Android 应用程序关联

    我想将特定扩展名的文件 例如任何扩展名为 xyz 的文件 与我的应用程序关联 这意味着 当用户在文件资源管理器 或其他地方 如 gmail 驱动器等 中点击 SaveFile1 xyz 时 我的应用程序应该启动 并且文件的 Uri 将在 I
  • 如何在 Python 中从平面列表构建嵌套列表? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个简单的列表 例如 flat 1 1 1 1 1 1 1 2 2 2 1 2 2 3 我需要转换为嵌套列表 其中每个级别 破折号后跟数
  • 当日志在不同进程中发出时,caplog 中的消息为空

    我正在使用 log cli true 运行测试 剧本 import logging import sys from multiprocessing import Process logging basicConfig stream sys
  • 找不到 CURL NSS 客户端证书 myCert

    我正在尝试使用curl 访问https 地址 将我的证书传递给它并使用我自己的信任库 我们有自己的CA 验证服务器的证书 我现在以 root 身份运行 curl v cert home cdfoote myCertificate pem m
  • 从原型创建 Maven 项目时出错:501 HTTPS 必需

    I run mvn archetype generate并得到这个错误 Error reading archetype catalog http repo maven apache org maven2 org apache maven w
  • NamedScopes Ninject 绑定和异步(线程)

    我的项目由服务和存储库构成 所有存储库共享数据库上下文 在我的一个服务层中 我有一个使用存储库写入数据库的异步方法 Web 请求将完成并处理上下文 然后此方法才能使用它 我试着去理解命名范围 http www planetgeek ch 2
  • 如何生成多值 INSERT 的 postgresql 转储而不是 COPY 并将插入批处理到显式事务中?

    我在任何地方都找不到关于如何在通过生成数据库转储时将插入批量化为每事务 100 个插入的批次的任何信息pg dump公用事业 我究竟需要如何执行它 我没有找到任何参数 gt man pg dump 来执行此操作 即使是最精致的answer
  • 填充 MultiIndex Pandas Dataframe 中的日期空白

    我想修改 pandas MultiIndex DataFrame 以便每个索引组都包含指定范围内的日期 我希望每个组都用值 0 或NaN Group A Group B Date Value loc a group a 2013 06 11
  • 仅在 PHPUnit 中需要时才执行 dataProviders?

    我的测试套件即使只是开始也需要几分钟 这是因为数据提供者在 phpunit 启动时立即执行 并且它们的所有数据 数千个对象 都保存在内存中 有没有办法在测试运行之前调用 dataProviders 我不在乎在屏幕上看到如此精确的进展 Tha
  • MongoDB 未找到合适的服务器

    我在连接到副本集时遇到问题 MongoDB Driver Exception ConnectionTimeoutException No suitable servers found serverSelectionTryOnce set S
  • React 中模型更改 11 次后 Froala 编辑器崩溃

    我在没有身份的情况下在线构建了一个简单的编辑器 在后端实现Node JS 与 Socket IO MongoDB 以及客户端使用React连接Socket IO 为了创建编辑器 我使用了弗罗拉编辑 https www froala com
  • 在网页中显示 Google 工作表单元格的内容

    我有一个包含 html 代码的单元格的 google 工作表 我想知道在网页中显示此 html 的最佳方式 我尝试过谷歌电子表格 API 和谷歌可视化 API 以下是如何使用 Javascript 图表 API 显示单个单元格中的信息 也许
  • 用更有意义的文本替换 GCC 输出中的 a-hats [重复]

    这个问题在这里已经有答案了 可能的重复 为什么 gcc 的所有错误消息中都有 https stackoverflow com questions 547071 why does gcc have a in all its error mes
  • const_iterator 和 iterator 有什么区别? [复制]

    这个问题在这里已经有答案了 这两者在 STL 内部的实现方面有什么区别 性能方面有什么区别 我想当我们以 只读方式 遍历向量时 我们更喜欢const iterator right 谢谢 没有性能差异 A const iterator是一个指
  • 在 C 中使用 fgets 和 strcmp [重复]

    这个问题在这里已经有答案了 我试图从用户那里获取字符串输入 然后根据他们输入的输入运行不同的函数 例如 假设我问 你最喜欢的水果是什么 我希望程序根据他们输入的内容进行评论 我不知道该怎么做 这是我到目前为止所拥有的 include
  • 不支持使用微风在同一查询中执行选择和扩展

    我使用 Durandal breeze 开发了一个 asp net 解决方案 这是我获取所有托运人的代码 var query EntityQuery from Shippers select id name street city retu
  • 在 Spring MVC 中使用一系列项目处理表单发布

    我正在尝试将一些数据从客户端发送到服务器 并将其处理为文件下载 我使用简单的 HTML 表单 因为我想初始化文件下载 而不是 AJAX 其中一个表单字段是一组项目 另外两个是名称和描述字符串 在提交表单之前 我将此字段序列化为字符串 JSO