【问题标题】:Spring ModelAndView not working with ajax callSpring ModelAndView 不适用于 ajax 调用
【发布时间】:2017-12-07 19:12:33
【问题描述】:

Ajax 调用 Spring 控制器 employee_edit 但 ModelAndView 不工作。它不会重定向到带有对象的 jsp 页面。我想重定向到带有对象 employee 的页面 employee_registration.jsp强>。代码没有错误。

Ajax

 $('#example1 tbody').on( 'click', 'button1', function () {
                var eid = table.row( $(this).parents('tr') ).data().eid;
                $.ajax({
                    type:"GET",
                    url:"employee_edit?eid="+eid
                }); 

控制器

@RequestMapping(value="/employee_edit", method=RequestMethod.GET)
public ModelAndView RegitrationEdit(@RequestParam("eid") long eid)
{           
  Employee employee=employeeService.getEmployee(eid);
  ModelAndView mv=new ModelAndView(); 
  mv.setViewName("employee/employee_registration");
  mv.addObject("employee",employee);
  return mv;
}

运行代码后,它没有显示任何错误。浏览代码ModelAndView("employee/employee_registration","employee",employee);,但没有任何反应。 提前致谢。

【问题讨论】:

  • "employee/employee_registration" 页面位于resources/templates/employee/employee_registration.jsp 对吗?顺便说一句,你是使用 spring-boot 还是只使用自定义配置?
  • @varren 感谢您的回复。页面路径,一切正常。它在控制器 @RequestMapping("/employee") public String Employee() { return "employee/employee_registration"; } 上工作并使用 Spring MVC 而不是 Spring Boot

标签: ajax spring spring-mvc modelandview


【解决方案1】:

我认为在您的 ajax 调用中您需要添加成功参数。您可以简单地将您的调用修改为

 $.ajax({
            type:"GET",
            url:"employee_edit",
            data:{"eid":eid},
            success:function(data){
            }
       });

或者您也可以在代码中仅添加成功参数

$.ajax({
            type:"GET",
            url:"employee_edit?eid="+eid
            success:function(data) { }
       });

但我更喜欢第一个。它更清晰。

这应该会完成 ajax 调用并且您的程序应该可以运行。

【讨论】:

    【解决方案2】:

    从 ajax 调用时,ModelAndView 将不起作用。您需要通过使用注释@ResponseBody 标记返回类型来将员工对象返回为json

    @RequestMapping(value="/employee_edit", method=RequestMethod.GET)
    public @ResponseBody Employee RegitrationEdit(@RequestParam("eid") long eid)
    {           
      Employee employee=employeeService.getEmployee(eid);    
      return employee;
    }
    

    调用成功后,会在成功回调中得到响应。

    $.ajax({
        type:"GET",
        url:"employee_edit?eid="+eid,
        success: function(data) {
            //here data is the employee object
            //process it here and redirect using window.location
        }
    }); 
    

    【讨论】:

      猜你喜欢
      • 2013-10-22
      • 2018-11-26
      • 1970-01-01
      • 2011-04-04
      • 2021-08-13
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多