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を返すようにコードを変更しようとしましたが、それでも指定されたビュー名に戻りません。

私はJBoss7.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フィルターはリクエストの最後に後処理を行うため、これが機能するためにはサーブレット3非同期リクエスト機能をサポートする必要があります。最初のサーブレットコンテナスレッドが終了し、応答が開いたままの場合。Sitemeshフィルターがこれを認識していない場合、処理を早期に完了しようとします。

于 2013-03-14T10:33:56.953 に答える
1

私はsitemeshに期待していません。ただし、これはサーブレットでもあるため、「コマンドチェーン」パターンに従います。つまり、必要な正しいURLの転送に失敗する可能性があります。非同期スプリングの構成とsitemesh構成をweb.xmlに投稿できますか

于 2013-03-26T22:09:35.203 に答える
-1

役に立つかもしれません。ModelAndViewではなく文字列として返します。

于 2013-03-25T11:35:47.373 に答える