Support null query param values in ServerRequest.queryParam(String)
Issue: SPR-15740
This commit is contained in:
		
							parent
							
								
									625855c00f
								
							
						
					
					
						commit
						0065bc5ee5
					
				| 
						 | 
				
			
			@ -21,6 +21,7 @@ import java.net.URI;
 | 
			
		|||
import java.nio.charset.Charset;
 | 
			
		||||
import java.nio.charset.StandardCharsets;
 | 
			
		||||
import java.security.Principal;
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Locale;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
| 
						 | 
				
			
			@ -40,6 +41,7 @@ import org.springframework.http.codec.json.Jackson2CodecSupport;
 | 
			
		|||
import org.springframework.http.server.reactive.PathContainer;
 | 
			
		||||
import org.springframework.http.server.reactive.ServerHttpRequest;
 | 
			
		||||
import org.springframework.lang.Nullable;
 | 
			
		||||
import org.springframework.util.CollectionUtils;
 | 
			
		||||
import org.springframework.util.MultiValueMap;
 | 
			
		||||
import org.springframework.web.reactive.function.BodyExtractor;
 | 
			
		||||
import org.springframework.web.server.ServerWebExchange;
 | 
			
		||||
| 
						 | 
				
			
			@ -146,12 +148,12 @@ public interface ServerRequest {
 | 
			
		|||
	 * @return the parameter value
 | 
			
		||||
	 */
 | 
			
		||||
	default Optional<String> queryParam(String name) {
 | 
			
		||||
		List<String> queryParams = queryParams().get(name);
 | 
			
		||||
		if (queryParams.isEmpty()) {
 | 
			
		||||
		List<String> queryParamValues = queryParams().get(name);
 | 
			
		||||
		if (CollectionUtils.isEmpty(queryParamValues)) {
 | 
			
		||||
			return Optional.empty();
 | 
			
		||||
		}
 | 
			
		||||
		else {
 | 
			
		||||
			String value = queryParams.get(0);
 | 
			
		||||
			String value = queryParamValues.get(0);
 | 
			
		||||
			if (value == null) {
 | 
			
		||||
				value = "";
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -113,6 +113,14 @@ public class DefaultServerRequestTests {
 | 
			
		|||
		assertEquals(Optional.of(""), request.queryParam("foo"));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	public void absentQueryParam() throws Exception {
 | 
			
		||||
		MockServerHttpRequest mockRequest = MockServerHttpRequest.method(HttpMethod.GET, "http://example.com?foo").build();
 | 
			
		||||
		DefaultServerRequest request = new DefaultServerRequest(mockRequest.toExchange(), messageReaders);
 | 
			
		||||
 | 
			
		||||
		assertEquals(Optional.empty(), request.queryParam("bar"));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	public void pathVariable() throws Exception {
 | 
			
		||||
		MockServerHttpRequest mockRequest = MockServerHttpRequest.method(HttpMethod.GET, "http://example.com").build();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue