如何将HTML表数据绑定到spring控制器中的java对象?

时间:2010-05-19 15:40:20

标签: java jquery jsp spring-mvc

我有一个Spring MVC应用程序,使用JSP作为我的视图技术,使用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>

我需要序列化这个表,以便以后可以绑定到我的控制器中的对象。但是,jquery serialize()方法仅适用于表单字段。将表数据放入HTTP请求以便以后将其绑定到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
}

在屏幕中,用户即时创建新项目。当用户完成后,他们提交表单,然后我需要处理列表中的所有项目并使用这些项目实例化新的集合。

出于显示目的,我在创建项目时创建新的表格行。

3 个答案:

答案 0 :(得分:2)

<Form>标记是您告诉浏览器“将此内容放入网络请求中”的方式。这就是你在Spring中获得对象绑定的方式。你不使用表格的原因是什么?您不必将其放在页面中的表单中,如果您确实需要,可以在javascript中提供表元素ID并获取其内容。

编辑:我想也许很难回答,因为不清楚为什么你希望浏览器首先回馈你给它的东西。也许您真正需要的是控制器上的@SessionAttributes()注释,以便您可以保留显示给用户的原始页面的状态?

更多编辑:

kk,现在看。如果您想要的是Spring Web数据绑定,则在添加更多表行时并行创建表单。如,

<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"/>
....

然后只需提交,它就会为你绑定。如果您的意思是自己处理内容,那么您可能会像其他人一样使用XHR。

答案 1 :(得分:1)

使用Spring Data Binding and Validation API将其绑定到您自己设计的Java对象中。该文档与网络无关;查看后面的章节,了解Web层如何利用它。

我认为你需要在表格之外进行抽象。

答案 2 :(得分:0)

为了将您的表信息粘贴到java对象中,您首先需要将其发送到服务器..因为您需要通过XHR或表单发送它。

为了序列化对象,你需要编写一些javascript / jquery。 我可以为你编写它,但是你的表格看起来有些模糊,我也不想猜测你想要添加数据的java对象是什么样的。

相关问题