java - Spring MVC Controller 将什么发送回 jQuery get/post 调用?

标签 java javascript jquery ajax spring-mvc

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

@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 View (someView.jsp) 并让它使用由 Controller “注入(inject)”的 Spring 标签/模型。

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

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

我是一个视觉学习者,所以代码片段(客户端 jQuery 和服务器端 Controller / View )非常非常感谢!提前致谢!

最佳答案

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

因此,如果您需要使用 AJAX 请求刷新页面的一部分,您可以像处理“传统”页面一样使用 Controller ,然后转发到为该部分生成标记的 View 必须刷新的页面。因此,不是生成完整的 HTML 页面,而是来自 <html></html> , View 只会生成页面的一部分。

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

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

关于java - Spring MVC Controller 将什么发送回 jQuery get/post 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12602315/

相关文章:

javascript - 将 Google 云端硬盘内容流式传输到 Chromecast

jquery - 如何检查元素 visibility=hidden 是否为 true jQuery

java - getDeclaredConstructor 找不到以接口(interface)作为参数的构造函数

Java - 日志记录和跟踪

javascript - 在 PDF 文件中使用 JavaScript 代码的文档

javascript - 让 JW Player 在点击播放之前缓冲帧

javascript - 如何使用 Javascript 从文件夹中获取文件数组

c# - Jquery/C# 进行 webService 调用错误 : cannot be serialized because it does not have a parameterless constructor

java - 测试时如何恢复表中的一条记录/行?

java - maven + eclipse + servlet-api.jar