我有一个 Spring MVC 应用程序,使用 JSP 作为我的 View 技术,并使用 Jquery for AJAX。我有一个如下表:
<table>
<tr>
<td>name1</td>
<td>value1</td>
<td>setting1</td>
</tr>
<tr>
<td>name2</td>
<td>value2</td>
<td>setting2</td>
</tr>
</table>
我需要序列化该表,以便稍后可以将其绑定(bind)到 Controller 中的对象。然而,jquery serialize() 方法仅适用于表单字段。将表数据放入 HTTP 请求以便我稍后可以将其绑定(bind)到 java 对象的最佳方法是什么?
编辑:
我有一个java对象,它有一个集合,所以
class MyOject {
private List<AnotherObject> items = new ArrayList<AnotherObject>();
// standard getters and setters
}
class AnotherObject {
private name;
private value;
private setting;
// getters and setters
}
在屏幕中,用户正在动态创建新项目。当用户完成后,他们提交表单,然后我需要处理列表中的所有项目并使用这些项目实例化一个新集合。
出于显示目的,我在创建项目时创建一个新的表格行。
最佳答案
<Form>
标签是您告诉浏览器“将这些内容放入网络请求中”的方式。这就是在 Spring 中获得对象绑定(bind)的方式。您不使用表格的原因是什么?您不必将其放入页面中的表单中,如果确实需要,您可以为表格元素提供 ID 并在 javascript 中获取其内容。
编辑:我想也许很难回答,因为不清楚为什么你希望浏览器返回你最初给它的东西。也许您真正需要的是 @SessionAttributes()
您的 Controller 上的注释,以便您可以保留向用户显示的原始页面的状态?
更多编辑:
kk,现在看看。如果您想要的是 Spring Web 数据绑定(bind),那么在添加更多表行时并行创建一个表单。例如,
<form id="myObject" action="whateverYouNeedHere.htm" method="post">
<input type="hidden" id="items[0].name" name="items[0].name" value="foo"/>
<input type="hidden" id="items[0].value" name="items[0].value" value="bar"/>
<input type="hidden" id="items[0].setting" name="items[0].setting" value="buzz"/>
<input type="hidden" id="items[1].name" name="items[1].name" value="foo"/>
<input type="hidden" id="items[1].value" name="items[1].value" value="bar"/>
....
然后只需提交,它就会立即为您绑定(bind)。如果您确实打算自己处理内容,那么您可能可以像其他人提到的那样使用 XHR。
关于java - 如何将 HTML 表数据绑定(bind)到 Spring Controller 中的 java 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2867047/