我正在开发一个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请求正常工作。
答案 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链接中的超时部分。