我是 jquery 和 SpringMVC 的新手。我正在使用 jquery 在用户单击 href 后提交请求。服务器处理请求后,将显示一个模式弹出窗口,其中包含来自服务器的详细信息。
$.post(taskSrchURL, function(data) {
$('#popupmodal').modal('show');
});
这是 Controller :
@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 元素的示例,但我不想这样做。
有办法做到这一点吗?
提前致谢!
最佳答案
你基本上有两个选择:
客户端渲染:
如果您需要的来自服务器的数据可以使用 javascript 轻松插入到您的页面中,那么您应该使用 @ResponseBody
从 Controller 方法将其作为 JSON 返回。 Jackson 可以自动转换为 JSON。
然后,您可以使用现有的 Javascript 模板引擎库在客户端浏览器上将数据呈现为 html 并将其插入页面中,或者只是手动插入(例如使用 jQuery)。
<小时/>服务器端渲染:
如果您想在服务器端渲染带有数据的页面部分,然后将页面的现成部分发送回客户端,您需要一个模板引擎,它允许您随时渲染模板任何地方(在本例中是在您的 Controller 方法中)。然后,您可以使用 @ResponseBody
将 html 字符串以 JSON 形式再次发送回来,并将其插入页面中。
我不认为 JSP/JSTL 可以做到这一点(或者说它非常困难/hacky)。我推荐FreeMarker相反。
您仍然可以对“完整”页面使用 JSP/JSTL,对部分页面使用 FreeMarker。 FreeMarker 与 JSP/JSTL 没有太大区别,因此您可以翻译页面的部分内容而不会出现太多问题。
关于java - Jquery post到Spring Controller 返回java bean以进行jSTL解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29156886/