Flush headers after null ResponseBodyEmitter

Issue: SPR-14315
master
Rossen Stoyanchev 8 years ago
parent 431a50823f
commit f20f6c952a
  1. 1
      spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitterReturnValueHandler.java
  2. 4
      spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitterReturnValueHandlerTests.java

@ -137,6 +137,7 @@ public class ResponseBodyEmitterReturnValueHandler implements AsyncHandlerMethod
returnValue = responseEntity.getBody();
if (returnValue == null) {
mavContainer.setRequestHandled(true);
outputMessage.flush();
return;
}
}

@ -21,6 +21,7 @@ import static org.springframework.web.servlet.mvc.method.annotation.SseEmitter.*
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
@ -184,11 +185,12 @@ public class ResponseBodyEmitterReturnValueHandlerTests {
@Test
public void responseEntitySseNoContent() throws Exception {
MethodParameter returnType = returnType("handleResponseEntitySse");
ResponseEntity<?> entity = ResponseEntity.noContent().build();
ResponseEntity<?> entity = ResponseEntity.noContent().header("foo", "bar").build();
handleReturnValue(entity, returnType);
assertFalse(this.request.isAsyncStarted());
assertEquals(204, this.response.getStatus());
assertEquals(Collections.singletonList("bar"), this.response.getHeaders("foo"));
}
private void handleReturnValue(Object returnValue, MethodParameter returnType) throws Exception {

Loading…
Cancel
Save