Spring mvc - Callable <string> request </string>

时间:2015-03-04 14:35:47

标签: java spring spring-mvc

我正在开发一个spring mvc应用程序。我需要一个异步请求,所以我遇到了一个返回Callable

的请求

TestController.java

@RequestMapping(value ="/views/async", method = RequestMethod.GET)
public Callable<String> getViewAsyncWay(){
    return new Callable<String>(){
        Thread.sleep(5000);
        return "test-async"
    };
}

测试async.jsp

    <div>This page is delivered with async request.</div>

针对home.jsp

    $(document).ready(function(){
        $('btn-aync-req').on('click', function(){
            $.ajax({
                type: 'GET',
                url: "<c:url value="/views/async"/>",
                success: function(data){
                    $('#container').html(data);
                }
            });
        });
    });

    <body>
        <div id="container">
        </div>
        <input type="button" id="btn-async-req" value="Send Request"/>
    </body>

现在,当我点击发送请求时,服务器日志表示请求正常处理,返回的资源是/views/aysnc.jsp(这是我的请求uri)

我无法弄清楚我犯了哪个错误。

applicationContext.xml 我添加了:

<task:annotation-driven/>

我项目中正常的spring-mvc请求正常工作。

1 个答案:

答案 0 :(得分:0)

好吧终于我明白了。在我的Windows环境中,它没有抛出任何错误,但它也没有工作。

最后我搬到了ubuntu,我收到了真正的错误。在web.xml中,我输入了以下行:

<async-supported>true</async-supported>

现在应该输入上面的行!!

<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
</servlet>

它有效!!感谢@Sotirios Delimanolis,在他发表评论后我转到linux环境获取日志:)

此外,您还必须为异步请求配置超时值。有关更详细的说明,请查看this链接中的超时部分。