SPR-8803 Refine UriComponentsBuilder.replaceQueryParam().

If no values are given, the query parameter is removed.
This commit is contained in:
Rossen Stoyanchev
2011-11-10 15:08:24 +00:00
parent dc88a7c8ba
commit 2a39f34d33
3 changed files with 16 additions and 6 deletions

View File

@@ -404,7 +404,7 @@ public class UriComponentsBuilder {
/**
* Sets the query parameter values overriding all existing query values for the same parameter.
* If no values are given, the resulting URI will contain the query parameter name only.
* If no values are given, the query parameter is removed.
*
* @param name the query parameter name
* @param values the query parameter values
@@ -413,7 +413,9 @@ public class UriComponentsBuilder {
public UriComponentsBuilder replaceQueryParam(String name, Object... values) {
Assert.notNull(name, "'name' must not be null");
this.queryParams.remove(name);
queryParam(name, values);
if (!ObjectUtils.isEmpty(values)) {
queryParam(name, values);
}
return this;
}

View File

@@ -240,7 +240,7 @@ public class UriComponentsBuilderTests {
builder.replaceQueryParam("baz");
result = builder.build();
assertEquals("baz", result.getQuery());
assertNull("Query param should have been deleted", result.getQuery());
}
}