diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/flux/request/FluxHandlerMethodArgumentResolver.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/flux/request/FluxHandlerMethodArgumentResolver.java index 525c17ac7..b0b18a4b6 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/flux/request/FluxHandlerMethodArgumentResolver.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/flux/request/FluxHandlerMethodArgumentResolver.java @@ -91,6 +91,7 @@ public class FluxHandlerMethodArgumentResolver if (isPlainText(webRequest) && CharSequence.class.isAssignableFrom(type)) { body = Arrays.asList(StreamUtils.copyToString(nativeRequest.getInputStream(), Charset.forName("UTF-8"))); + nativeRequest.setAttribute(WebRequestConstants.INPUT_SINGLE, true); } else { String json = new String(StreamUtils.copyToString( diff --git a/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/RestApplicationTests.java b/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/RestApplicationTests.java index 524a0fa6d..0e772f30f 100644 --- a/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/RestApplicationTests.java +++ b/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/RestApplicationTests.java @@ -338,6 +338,14 @@ public class RestApplicationTests { assertThat(result.getBody()).isEqualTo("[\"(FOO)\",\"(BAR)\"]"); } + @Test + public void singleValuedText() throws Exception { + ResponseEntity result = rest.exchange(RequestEntity + .post(new URI("/bareUppercase")).contentType(MediaType.TEXT_PLAIN) + .body("foo"), String.class); + assertThat(result.getBody()).isEqualTo("(FOO)"); + } + @Test public void transform() throws Exception { ResponseEntity result = rest.exchange(RequestEntity