java - Jquery post到Spring Controller 返回java bean以进行jSTL解析

标签 java javascript jquery html spring

我是 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/

相关文章:

javascript - 如何通过Jquery从具有相同名称但不同索引的输入中获取所有值

javascript - 异步函数回调返回值

javascript - 这是如何工作的 $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)

Java: new AbstractClass(){} 这个声明叫什么?

java - 实现类只有一个,为什么要用接口(interface)?

javascript - threejs 光线转换 - 相机和加载的对象模型之间的交集

javascript - Python. Selenium 。找不到现有元素。如何切换框架

c# - 在Web方法中创建cookie

java - 代理对象方法

java - 从二进制文件读取并将某些信息转换为字符串