2011-10-04 89 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", ""); 
      } 
    }