2

我正在使用 Spring MVC 异步处理,但控制器不会在 Web 浏览器上返回视图。

@RequestMapping(value = "/generateGM", method = RequestMethod.POST)
    public Callable<ModelAndView> generateGMReport(@RequestParam("countryCode") int countryCode, ModelAndView mv) {

        Callable<ModelAndView> c = new GenericCallable(countryCode, reportDao, mv);

        return c;
    }

@Override
    public ModelAndView call() throws Exception {

        List<CostReport> gmList = reportDao.generateGrossMarginReport(countryCode);

        mv.setViewName("gmReport");
        mv.addObject("gmList", gmList);

        return mv;
    }

我曾尝试修改代码以返回 Callable,但它仍然没有返回到指定的视图名称。

我正在使用 JBoss 7.1 作为。

部署期间有警告:

WARN  [org.jboss.as.ee] (MSC service thread 1-7) 

JBAS011006: Not installing optional component 

org.springframework.web.context.request.async.StandardServletAsyncWebRequest 
due to exception: org.jboss.as.server.deployment.DeploymentUnitProcessingException: 
JBAS011054: 
Could not find default constructor for class 
org.springframework.web.context.request.async.StandardServletAsyncWebRequest

原因:可能 sitemesh 无法从 Spring MVC 框架(AsynContext)设置响应对象。

是什么原因 ?

请帮忙。

谢谢。

4

3 回答 3

1

由于 Sitemesh 过滤器在请求结束时会进行一些后处理,因此它需要支持 Servlet 3 异步请求功能才能使其正常工作。当初始 Servlet 容器线程退出并且响应保持打开状态时。如果 Sitemesh 过滤器没有意识到这一点,它将尝试提前完成处理。

于 2013-03-14T10:33:56.953 回答
1

我不是对 sitemesh 的期望。但它也是一个 servlet,因此它们遵循“命令链”模式,这意味着它可能无法传输您需要的正确 url。您可以在 web.xml 中发布异步 spring 和 sitemesh 配置的配置吗

于 2013-03-26T22:09:35.203 回答
-1

这可能会有所帮助。作为String而不是ModelAndView返回。

于 2013-03-25T11:35:47.373 回答