如何使用spring mvc重定向到jquery ajax调用中查看

时间:2015-03-03 11:42:14

标签: javascript jquery ajax spring jsp

现在我的ajax电话:

  $.ajax({
                type: "POST",
                url: contextPath +"/action",
                cache:false,
                dataType: 'text',
                data: {Id:Id},
                success: function(Result){
                    alert("in success ***");
                    dialog.dialog("close");
                    window.location.href = Result;

                } ,
                error: function(Result){
                    alert("in error");
                    }
                });

我的控制器代码:

  @RequestMapping(value="/action", method=RequestMethod.POST)
  @ResponseStatus(value=HttpStatus.OK)
  public @ResponseBody ModelAndView getApplyTemplatePage(@RequestParam("Id")int cId){
      System.out.println("In apply template controller");
      System.out.println("the value of id "+cId+" hostname"+hostName+"templateName"+tempName);

      return new ModelAndView("applyTemplate");
  }

现在我想重定向到 applyTemplate.jsp页面。 我的要求是通过ajax调用如何重定向到另一个 jsp页面

1 个答案:

答案 0 :(得分:1)

您可以在spring中发送带有位置标头的ResponseEntity,并相应地重定向。

public ResponseEntity<?> getApplyTemplatePage(@RequestParam("Id") int cId, UriComponentsBuilder b) {
        UriComponents uriComponents = b.path("/applyTemplate.jsp").build();

        HttpHeaders headers = new HttpHeaders();
        headers.setLocation(uriComponents.toUri());
        return new ResponseEntity<Void>(headers, HttpStatus.OK);

    }

在ajax调用中,您可以获取位置标头并相应地重定向。

success: function(data, textStatus, xhr) {
      window.location = xhr.getResponseHeader("Location");
    }