如何使用Spring MVC在POST请求中加载复杂对象

时间:2014-01-14 22:24:27

标签: xml forms spring spring-mvc xmlhttprequest

我正在学习Spring和Spring MVC,主要来自Spring文档和其他论坛,如果我找不到解释,有时会在stackoverflow中提问。

我了解在用户提交表单时如何加载对象。 我学会了使用模型属性。

但我没有找到样本,这些样本解释或简要介绍了在尝试加载复杂对象时如何继续。

为了更好地理解这个概念,我提出了一个问题,我试图找到一个使用Spring MVC的解决方案

用户点击“提交”时的页面将以XML格式向服务器发送信息。 我试图给出xml的高级结构。

<xml>
<fileOne>
  <filename>posttoserver</filename>
  <totalpages>2</totalpages>
  <pageList>
    <page>
      <number>1</number>
      <url>/doc/part/1.jpg</url>
      <metadata>
          <information>some information about the page</information>
      </metadata>
    </page>
    <page>
      <number>2</number>
      <url>/doc/part/2.jpg</url>
      <metadata>
          <information>some information about the page</information>
      </metadata>
    </page>
    <page>
      <number>3</number>
      <url>/doc/part/3.jpg</url>
      <metadata>
          <information>some information about the page</information>
      </metadata>
    </page>
  </pageList>
</fileOne>
</xml>

我正在尝试将其加载回父对象文件应具有元素fileName,TotalPages和List of Pages对象的对象。

我需要一些方向来解决这个问题。

感谢您的阅读。 感谢你的时间!!!

1 个答案:

答案 0 :(得分:2)

如果您拥有此文档的Java架构,则只需将此对象作为参数添加到端点中。所有解组都将由Spring使用Jaxb转换器完成。

所以你会:

public void yourEndpoint(@RequestBody YourObject yourObject) {
 ...
}

如果你没有在Java中获得xml对象,你可以创建包含你的结构的@XmlRootElement注释的简单POJO:

@XmlRootElement
public YourObject implements Serializable {
  ...
}