2011-10-04 55 views
0

我在开发一个应用程序中使用Spring注释的MVC框架。Spring MVC + GWT:重定向问题

以下是我面临的问题:

  1. 我有控制器,它做了重定向,一个POST之后:

    @RequestMapping(value = "/emdm-viewer-redirect.do", method = RequestMethod.POST) 
    public ModelAndView getMetricKeysAndRedirect(@RequestParam Object jsonObject, Model model) 
    { 
         ModelAndView modelAndView = new ModelAndView("redirect:/mdm-viewer.do"); 
         ..... 
         ..... 
         ....//make some service calls and populate value1 
         ... 
         modelAndView.addobject("param1", value1); 
         return modelAndView; 
    } 
    
  2. 我有一个映射到URL mdm-另一个控制器viewer.do(上述重定向网址):

    @RequestMapping(value = "/mdm-viewer.do", method = RequestMethod.GET) 
    public String getMDMViewer(Model model) { 
         return "mdmViewer";  //returns a mdmViewer.jsp 
    } 
    

请注意,mdmviewer.jsp是一个位于classpath中的GWT入口点。 我有我的萤火虫窗口打开,告诉我一个GET请求是为mdm-viewer.do,但它给了我一个空白的回应。实际上,它不会重定向到新的jsp,并且与发出POST请求的地方保持在同一页面上。 但是,如果我复制萤火虫URL并在浏览器的新窗口中打开它,我会看到预期结果。

任何想法我在做什么错在这里?试图谷歌它很多,但无法找到任何地方类似的问题。

+0

是否萤火显示了一个302响应码在第一个请求中? –

+0

没有。 Firebug显示请求成功。但是,Firebug中的响应标签全部为空。它在我的所有浏览器(Chrome,IE和Firefox)中都显示出相同的结果。 – kunalk83

+0

这意味着你没有被重定向。你可以试试这个吗? :“重定向:mdm-viewer.do没有”/“ –

回答

0

最后,我用 @ResponseBody 而在我的GWT模块返回一个ModelAndView回从POST方法,我用了response.getText()输出做

@Override 
    public void onResponseReceived(Request request, Response response) { 
      if (200 == response.getStatusCode()) { 
      JSONObject jsonObject = (JSONObject) JSONParser.parse(response.getText()); 
      String viewName = jsonObject.get("viewName").isString().stringValue(); 
      JSONObject jsonParams = jsonObject.get("model").isObject(); 
      Set<String> chartKeys = jsonParams.keySet(); 
      String redirectURL = viewName + "?"; 
      for (String keyString : chartKeys) { 
        redirectURL = redirectURL + keyString + "=" + jsonParams.get(keyString).isString().stringValue() + "&"; 
       } 
      Window.open(GWT.getHostPageBaseURL() + redirectURL, "_self", ""); 
      } 
    }