【问题标题】:Spring MVC + GWT : Redirect IssueSpring MVC + GWT:重定向问题
【发布时间】:2011-10-04 00:01:29
【问题描述】:

我正在开发的应用程序中使用带有 Spring 注释的 MVC 框架。

以下是我面临的问题:

  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(上面提到的重定向 URL):

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

请注意,mdmviewer.jsp 是一个位于类路径中的 GWT 入口点。 我打开了我的萤火虫窗口,它告诉我对 mdm-viewer.do 发出了 GET 请求,但它给了我一个空白响应。事实上,它不会重定向到新的 jsp,而是停留在发出 POST 请求的同一页面上。 但是,如果我复制 firebug URL 并在浏览器的新窗口中打开它,我会看到预期的结果。

有什么想法我在这里做错了吗?尝试了很多谷歌,但在任何地方都找不到类似的问题。

【问题讨论】:

  • firebug 是否在第一个请求中显示 302 响应代码?
  • 不。 Firebug 显示请求成功。但是,Firebug 中的响应选项卡都是空白的。它在我所有的浏览器(Chrome、IE 和 Firefox)中显示相同的结果。
  • 表示你没有被重定向。你能试试这个吗? : "redirect:mdm-viewer.do 没有 "/"

标签: spring model-view-controller gwt redirect annotations


【解决方案1】:

最终,我使用 POST 方法返回了一个 ModelAndView @ResponseBody 在我的 GWT 模块中,我使用 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", "");
            }
    }

【讨论】:

    猜你喜欢
    • 2011-11-02
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 2013-06-01
    • 2014-06-20
    • 2015-06-05
    相关资源
    最近更新 更多