2

您好我正在使用带有异步请求处理的servelet-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 时(这意味着没有 DeferedResult)Jsp 内容按我的预期完美加载。

我在我的 tomcat 日志中得到以下日志。并且页面的内容没有加载。相反,我得到一个空页面。

2013 年 9 月 29 日下午 3:09:03 org.apache.jasper.compiler.TldLocationsCache tldScanJar 信息:已扫描至少一个 JAR 以查找 TLD,但未包含 TLD。启用此记录器的调试日志记录以获取已扫描但未在其中找到 TLD 的 JAR 的完整列表。在扫描期间跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。

4

0 回答 0