我试图在我的Spring MVC应用程序中以RESTful方式实现这个用例。想象一下,有一个名为SalesReport的POJO,其中包含Sales列表。使用内容协商我能够返回XML和JSON表示。例如......
<SalesReport>
<Sale>...</Sale>
</SalesReport>
对于我的HTML表示,它当然需要更性感。要求是使用Highcharts以及表格格式的数据显示图表。很标准的东西。我不确定如何以优雅的方式实现这一目标。我想过
将SalesReport序列化为XML / JSON格式的字符串并执行request.setAttribute()
。我觉得这样可以将我的控制器与我的观点相结合。我的XML和JSON表示不需要这个。
在JSP加载后进行AJAX调用以获取数据。这似乎浪费了另一个HTTP请求,我的数据也没有缓存。
使用函数使用Spring MVC的JSON和XML库创建util类,以返回我需要的序列化格式。然后在JSP中执行<%= RestUtil.toJSON(salesReport) %>
之类的操作。这样我的控制器就不知道我的HTML视图的细节了,而且我没有发送额外的HTTP调用。
对此有什么好处?
答案 0 :(得分:0)
为什么要在JSP中使用JSON / XML?使用内容协商text / html应该与控制器方法相对应。您可以使用jsp中的spring-form tld或JSTL直接访问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>