2013-03-13 2 views
2

Я использую асинхронную обработку Spring MVC, но контроллер не возвращает представление в веб-браузере.Spring Asynchronous Processing не возвращается для просмотра

@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).

В чем причина?

Пожалуйста, помогите.

Спасибо.

+0

Просьба предоставить любые рекомендации. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. – peterwkc

+0

Я попытался отключить файл sitemesh, и он возвратил некоторый результат, но нет возврата html с разрешением файла sitemesh. Кроме того, есть WARN [org.jboss.as.ee] (услуга резьбы MSC 1-7) JBAS011006: Не устанавливая необязательный компонент org.springframework.web.context.request.async.StandardServletAsyncWebRequest за счет исключения: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011054: не удалось найти конструктор по умолчанию для класса org.springframework.web.context.request.async.StandardServletAsyncWebRequest – peterwkc

ответ

1

Поскольку фильтр Sitemesh выполняет некоторую пост-обработку в конце запроса, ему необходимо поддерживать функцию асинхронного запроса Servlet 3, чтобы это работало. Когда начальный поток контейнера сервлета выходит и ответ остается открытым. Если фильтр Sitemesh не знает об этом, он попытается завершить обработку до начала.

+0

Любое конкретное решение? Я могу попробовать последнюю футбольницу 3. – peterwkc

-1

Это может быть полезно. Возврат как Строка вместо ModelAndView.

+0

Я использую асинхронный сервлет. – peterwkc

1

Я не ожидаю на sitemesh. Но это тоже сервлет, поэтому они следуют шаблону «цепочка команд», что означает, что он не сможет передать правильный URL-адрес, который вам нужен. можете ли вы опубликовать конфигурацию для async spring и sitemesh config в web.xml

Смежные вопросы