将POJO序列化为JSON / XML以在JSP中使用的正确方法

时间:2011-03-23 04:03:38

标签: java json jsp rest spring-mvc

我试图在我的Spring MVC应用程序中以RESTful方式实现这个用例。想象一下,有一个名为SalesReport的POJO,其中包含Sales列表。使用内容协商我能够返回XML和JSON表示。例如......

 <SalesReport>
     <Sale>...</Sale>
 </SalesReport>

对于我的HTML表示,它当然需要更性感。要求是使用Highcharts以及表格格式的数据显示图表。很标准的东西。我不确定如何以优雅的方式实现这一目标。我想过

  1. 将SalesReport序列化为XML / JSON格式的字符串并执行request.setAttribute()。我觉得这样可以将我的控制器与我的观点相结合。我的XML和JSON表示不需要这个。

  2. 在JSP加载后进行AJAX调用以获取数据。这似乎浪费了另一个HTTP请求,我的数据也没有缓存。

  3. 使用函数使用Spring MVC的JSON和XML库创建util类,以返回我需要的序列化格式。然后在JSP中执行<%= RestUtil.toJSON(salesReport) %>之类的操作。这样我的控制器就不知道我的HTML视图的细节了,而且我没有发送额外的HTTP调用。

  4. 对此有什么好处?

1 个答案:

答案 0 :(得分:0)

为什么要在JSP中使用JSON / XML?使用内容协商text / html应该与控制器方法相对应。您可以使用jsp中的spring-form tldJSTL直接访问POJO。

假设您已设置视图解析器:

@RequestMapping("salesreport")
public String getSalesReport(ModelMap model) {
   model.addAttribute("reports", salesReportService.findAll());
   return "reports/view";
}

在reports / view.jsp中:

<c:forEach items="reports" var="report">
   Field 1: ${report.field1} <br/>
   Field 2: ${report.field2}
</c:forEach>