Spring MVC上传文件并发送解析后的数据

Spring MVC upload file and send parsed data back

本文关键字:数据 并发 MVC 文件 Spring      更新时间:2023-09-26

我使用Spring MVC为我的web应用程序。我正在实现文件上传功能。按照教程,我可以通过输入类型为"file"的提交动作将上传的文件发送到服务器。然后我在服务器端解析了上传的xls文件,需要将解析的数据(3个自定义对象列表)发送回相同的表单以显示。我通过ModelAttribute返回数据。

然而,我现在的问题是,在客户端,我需要在我的javascript中使用那些自定义对象列表,但我只能通过jstl标签库检索自定义对象的每个字段,但我不能在我的javascript中获得那些自定义对象,我需要它们用于其他逻辑实现。

然后我尝试了Ajax文件上传插件,因为Ajax调用可以返回JSON响应,对象可以在Javascript中使用。但是不能使插件正常工作。

这个问题我已经纠结了好几天了>.<有人能帮忙吗?在Javascript中使用ModelAttribute的解决方案或Ajax调用解决方案都可以。非常感谢!!>

为什么你不能简单地将模型对象"扁平化"到HTML中,然后使用DOM API从Javascript访问它们?

你说你返回3个自定义对象列表。那么,对于每个列表,您建立一个(隐藏的)HTML表,例如,如果您在ModelAttribute中有一个Person对象列表,称为people:

<table id="people-table">
  <c:forEach var="person" items="${people}">
    <tr id="${person.id}>
      <td class="person-name">${person.name}</td>
      <td class="person-age">${person.age}</td>
      <td class="person-height">${person.height}</td>
    </tr>
  </c:forEach>
</table>

现在在您的Javascript中,您遍历people-table中的行,做任何您需要做的事情-例如使用jQuery:

$("#people-table tr").each(
    var personId = $(this).attr("id");
    var personName = $(this).find("td.person-name").text();
    // etc, etc
    // Do something with these as required
);

这可能不是最优雅的解决方案,但它很容易调试至少-你总是可以检查table与Firebug等,看看数据是否正确,从那里你会知道是否继续调试服务器端或在Javascript。