【问题标题】:What do Spring MVC controllers send back to jQuery get/post calls?Spring MVC 控制器将什么发送回 jQuery get/post 调用?
【发布时间】:2012-09-26 13:00:23
【问题描述】:

当我将 Spring MVC 与“传统”(非 AJAX,每次按钮点击后页面重新加载)网站/应用程序一起使用时,我通常会定义一个控制器:

@RequestMapping(value = "/someURL", method = RequestMethod.POST)
public ModelAndView updateThreshold(@RequestParam("x") String whatever) {

    ModelAndView mav = new ModelAndView();
    max.setView("someView");

    // Inject some models into the view.

    return mav;
}

然后我编写一个 JSP 视图 (someView.jsp) 并让它使用控制器“注入”的 Spring 标签/模型。

但是使用 jQuery,您会触发 GET/POST 请求,并期望简单地更新 DOM 的某些部分。我想知道两件事:

  • 使用 jQuery,Spring MVC 控制器设置(mav.setName(...))并返回什么“视图”?换句话说,没有新的“视图”,因为它是对同一页面/视图的 AJAX 调用。 jQuery 结果只需要更新现有的页面/视图。
  • 如果存在服务器端错误(即,某些@RequestParam 具有非法值),MVC 控制器如何返回错误消息,然后 jQuery 可以使用并显示给最终用户?

我是一个视觉学习者,所以代码 sn-ps(客户端 jQuery 和服务器端控制器/视图)非常赞赏!提前致谢!

【问题讨论】:

标签: java javascript jquery ajax spring-mvc


【解决方案1】:

Spring MVC 不关心请求是“传统”请求还是 AJAX 请求。除了一些潜在的附加标头外,这两种类型的请求完全相同。

因此,如果您需要使用 AJAX 请求刷新页面的一部分,您可以像处理“传统”页面一样使用控制器,然后转发到生成部分标记的视图必须刷新的页面。因此,视图不会生成完整的 HTML 页面,从<html></html>,只会生成页面的一部分。

您还可以发送使控制器返回 HTML 标记以外的内容:例如 XML 或 JSON。在这种情况下,将由处理响应的 JavaScript 函数使用接收到的数据并更新页面 DOM。

错误的处理方式也与“传统”请求完全相同。例如,如果出现500 错误,则由处理 AJAX 响应的 JavaScript 代码来执行它认为合适的操作。例如,显示警报弹出窗口或类似的东西。

【讨论】:

    猜你喜欢
    • 2012-01-29
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 2012-10-20
    • 2012-09-09
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多