2

こんにちは私は、非同期リクエスト処理でservlet-api 3.0.1を使用してWebアプリケーションを作成しています。

基本的に、Spring MVC コントローラーと、ModelAndView を遅延結果として返すリクエスト マッピングを使用します。

私のコントローラーは次のようになります

@RequestMapping("/deferred-result/model-and-view")
    public DeferredResult<ModelAndView> deferredResultWithView() {
        final DeferredResult<ModelAndView> result = new DeferredResult<ModelAndView>();
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("Hello world");
                result.setResult(new ModelAndView("views/html", "javaBean", new JavaBean("bar", "apple")));
            }
        }).start();
        return result;
    }

私のJSPは次のよ​​うになります

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
    <title>My HTML View</title>
    <link href="<c:url value="/resources/form.css" />" rel="stylesheet"  type="text/css" />     
</head>
<body>
<div class="success">
    <h3>foo: "${javaBean.foo}"</h3>
    <h3>fruit: "${javaBean.fruit}"</h3>
</div>
</body>
</html>

ModelAndView を同期的に (つまり、DefferedResult なしで) 返すと、Jsp コンテンツは期待どおりに完全に読み込まれます。

Tomcat ログに次のログが表示されます。また、ページのコンテンツが読み込まれていません。代わりに、空のページが表示されます。

2013 年 9 月 29 日 3:09:03 PM org.apache.jasper.compiler.TldLocationsCache tldScanJar 情報: 少なくとも 1 つの JAR で TLD がスキャンされましたが、TLD は含まれていませんでした。このロガーのデバッグ ロギングを有効にして、スキャンされたが TLD が見つからなかった JAR の完全なリストを取得します。スキャン中に不要な JAR をスキップすると、起動時間と JSP コンパイル時間が短縮されます。

4

0 に答える 0