正如標題所述,這意味着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,對嗎? –