如何从 Spring MVC 控制器返回对象以响应 AJAX 请求?

2023-12-25

我必须从控制器返回员工列表以响应 jQuery AJAX 请求。我该怎么办呢?

我的控制器:

@RequestMapping("phcheck")
public ModelAndView pay(@RequestParam("empid") int empid, String fdate, String tdate) {
    ModelAndView mav = new ModelAndView("phcheck");
    List<Employee> employees = entityManager.createQuery(
        "SELECT e FROM Employee e WHERE e.empId = " + empid, Employee.class)
        .getResultList();
    mav.addObject("employees", employees); // I need this list of employee in AJAX

    return mav;
}


相关AJAX代码view:

$(document).ready(function () {
    $("#empid").change(function () {
        if ($("#fdate").val() != "" && $("#tdate").val() != "" && $("#empid").val() != "") {
            jQuery.ajax({
                url: "phcheck.htm?empid=" + $("#empid").val() +
                                 "&&fdate=" + $("#fdate").val() +
                                 "&&tdate=" + $("#tdate").val(),
                success: function (data) {
                    alert(data + "success");
                },
                error: function (data) {
                    alert(data + "error");
                }
            });
        } else {
            alert("Please fill the from date and to date or select the employee id");
            $("#empid .option").attr("selected", "selected");
        }
    });
});


提前致谢。


我需要 ajax 中的员工列表

在spring中当你需要对象序列化、反序列化和消息转换时。在这种情况下,您需要使用注释您的控制器处理程序方法@RequestBody and @ResponseBody.

Where:

  • @ResponseBody: 会通知spring尝试转换其返回值并自动将其写入http响应。
  • @RequestBody:将通知 spring 尝试将传入请求正文的内容动态转换为参数对象。

在你的情况下你需要 JSON 类型,你必须添加@ResponseBody到您的方法签名或方法上方,并生成和使用哪些是可选的,例如:

@RequestMapping(value="phcheck", method=RequestMethod.GET
                produces="application/json")
public @ResponseBody List<Employee> pay(@RequestParam("empid") int empid, String fdate, String tdate) {

  //get your employee list here
  return empList;
}

并在 AJAX 调用中使用:

  • contentType: 'application/json'属性告诉您要发送的数据类型。和
  • dataType: json属性告诉 jquery 将接收什么内容类型的响应。

在你的情况下contentType: 'application/json'不需要,默认即可'application/x-www-form-urlencoded; charset=UTF-8'足够。

您可以在 AJAX 成功中收到员工列表,对其进行迭代,如下所示:

  success: function (data) {
          $.each(data, function(index, currEmp) {
             console.log(currEmp.name); //to print name of employee
         });    
        },

Note: Jackson mapper http://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl or any other mapper should be available on buildpath in order to work JSON serialize and deserialize.

也可以看看:

  • Spring MVC 3.1 的新特性 http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/new-in-3.1.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Spring MVC 控制器返回对象以响应 AJAX 请求? 的相关文章

随机推荐