我正在使用Spring MVC作为我的Web应用程序。我正在实现文件上传功能。在本教程之后,我能够通过输入类型“file”的提交动作将上传的文件发送到服务器。然后我在服务器端解析上传的xls文件,并需要将解析后的数据(3个自定义对象列表)发送回相同的表单进行显示。我通过ModelAttribute发回了数据。
然而,我现在的问题是,在客户端,我需要在我的javascript中使用这些自定义对象列表,但我只能通过jstl标记库检索自定义对象的每个字段,但我无法获取这些自定义对象在我的javascript中我需要它们用于其他逻辑实现。
然后我尝试了一个Ajax文件上传插件,因为ajax调用可以返回JSON响应,哪些对象可以在Javascript中使用。但无法使插件正常工作。
我已经坚持这个问题好几天>。<有人可以帮忙吗?在Javascript或Ajax调用解决方案中使用ModelAttribute的解决方案都可以。非常感谢!!!
答案 0 :(得分:0)
有没有理由不能简单地将模型对象“压扁”为HTML,然后使用DOM API从Javascript访问它们?
你说你返回3个自定义对象列表。那么,对于每个列表,您可以构建一个(隐藏的)HTML表格,例如,如果Person
中有ModelAttribute
个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>
:
people-table
现在在您的Javascript中,您遍历$("#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
);
中的行,执行您需要做的任何事情 - 例如使用jQuery:
table
它可能不是最优雅的解决方案,但它至少很容易调试 - 您可以随时检查{{1}}使用Firebug等来查看数据是否正确,从那里您将知道是否继续调试服务器端或Javascript。