正如标题所述,这意味着Http servlet请求是否被提交?http servlet请求被提交,这是什么意思?
我有一些请求拦截器,extednig HandlerInterceptorAdapter
,即覆盖postHandle
方法。后处理方法需要参数final HttpServletRequest response
。在方法体内有一个if
陈述检查,如果response.isCommitted()
,那究竟是什么检查?
private static final String voidResponse = "null";
@Override
public void postHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler,
final ModelAndView modelAndView) throws IOException {
if (!response.isCommitted()) {
if (DefaultServletHttpRequestHandler.class == handler.getClass()) {
return;
}
response.setStatus(200);
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json");
try (final Writer writer = response.getWriter()) {
writer.write(voidResponse);
}
log.info("void method called, respond with 200 and null");
response.flushBuffer();
}
}
编辑:我当然彪HttpServletRequest response
,坏拷贝磷酸酶 EDIT2:添加的代码
这个拦截器的意义在于当客户端调用一个void方法或当调用的方法返回null而不是来自方法签名的对象时修改响应,在这种情况下它将响应状态修改为200,并返回带有“null”的json。我将用方法体来编辑帖子以显示我的意思。 –
@AkkaJaworek我已经更新了我的答案,请检查。它解释了你的问题。希望有所帮助。 – vtor
谢谢,thios几乎是这样,我有控制器方法返回''ResponseEntity''然而在某些情况下,它可以返回null。如果我在这种情况下正确理解你,它会是:''Response ResponseEntity;''< - 响应被粉碎; ''返回null;''<-response没有被提交。无效方法也属于情况2,因为它们不会返回ResponseEntity,对吗? –