对于BigDecimal 和Boollean,您可以尝试使用toString() 和valueOf() 方法。
public String createUriString(){
String basePath="http://example.com";
String apiPath="api";
String name="example_name";
String channel="example_channel";
BigDecimal code = BigDecimal.valueOf(100500);
boolean isCreated= true;
MultiValueMap<String,String> params = new LinkedMultiValueMap<>();
params.set("name",name);
params.set("channel",channel);
params.set("code",code.toString());
params.set("isCreated",String.valueOf(isCreated));
UriComponents uriComponents = UriComponentsBuilder
.fromHttpUrl(basePath)
.path(apiPath)
.queryParams(params)
.build();
return uriComponents.toUriString();
}
http://example.com/apiname=example_name&channel=example_channel&code=100500&isCreated=true
您还可以使用 QueryParam 方法。这更容易。
public String createUriString(){
String basePath="http://example.com";
String apiPath="api";
String name="example_name";
String channel="example_channel";
BigDecimal code = BigDecimal.valueOf(100500);
boolean isCreated= true;
UriComponents uriComponents = UriComponentsBuilder
.fromHttpUrl(basePath)
.path(apiPath)
.queryParam("name",name)
.queryParam("channel", channel)
.queryParam("code", code)
.queryParam("isCreated", isCreated)
.build();
return uriComponents.toUriString();
}
这段代码的结果与前面的例子类似。
附:我找不到 getQueryParams(map) 方法。我们可能有不同版本的 Spring Boot。