[英]Jquery post to Spring controller to return java bean for jstl parsing
我是jquery和SpringMVC的新手。 我使用jquery在用户单击href后提交请求。 服务器处理请求后,将显示一个模式弹出窗口,其中包含来自服务器的详细信息。
$.post(taskSrchURL, function(data) {
$('#popupmodal').modal('show');
});
这是控制器:
@RequestMapping(value = "/api/task/{id}", method =
{RequestMethod.POST})
public ModelAndView searchDetails(@PathVariable("id") String
id,
HttpServletRequest request, HttpServletResponse response)
throws SearchException, ApplicationException {
Details details = service.getDetails(id, request, response);
prepareResponse(request, response, taskDetails);
ModelAndView modelAndView = new ModelAndView("details ");
modelAndView.addObject("details ", details);
return modelAndView;
我期望响应返回时可以访问“详细信息”对象,但是,我不确定如何访问它。 我希望能够使用jstl标记来引用数据,因为它很复杂,需要在几个选项卡上显示。
然而,
<c:out value="${details.id}"/>
不起作用。 我看到了很多示例,这些示例将ModalAndView中的“数据”设置为div的html元素,但是我不想这样做。
有没有办法做到这一点?
提前致谢!
您基本上有2个选择:
客户端渲染:
如果可以使用javascript将服务器上需要的数据插入到页面中而没有太多麻烦,则应使用@ResponseBody
从Controller方法将其作为JSON返回。 转换为JSON可以由Jackson自动完成。
然后,您可以使用现有的Javascript模板引擎库在客户端浏览器上将数据呈现为html,然后将其插入页面中,或者手动将其插入(例如,使用jQuery)。
服务器端渲染:
如果要用服务器端的数据渲染页面的一部分,然后将页面的现成部分发送回客户端,则需要一个模板引擎,该引擎可让您随时随地渲染模板(在在这种情况下,您的控制器方法)。 然后,您可以使用@ResponseBody
将html字符串再次作为JSON发送回,并将其插入页面。
我不认为JSP / JSTL可以做到这一点(或者这是非常困难的/ hacky)。 我建议改用FreeMarker 。
您仍然可以在“完整”页面上使用JSP / JSTL,而在零件上使用FreeMarker。 FreeMarker与JSP / JSTL并没有太大区别,因此您可以翻译页面的一部分而不会出现太多问题。
除了我的评论外,我强烈建议使用@ResponseBody
注释,而不要使用ModelAndView
确保在类路径上具有jackson-databind
,这将导致Spring自动将POJO序列化为JSON,可以将其直接用作ajax回调函数中的Javascript对象
在此处查看快速教程: http : //www.journaldev.com/2552/spring-restful-web-service-example-with-json-jackson-and-client-program
这种方法使Application Server与您的视图脱钩,从而使您不必依赖JSTL模板,从而可以选择直观的前端工作流程(签出AngularJS)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.