Fix ClassCastException in FormHttpMessageConverter

We should not cast MultiValueMap<String, ?> to MultiValueMap<String, String>
This commit is contained in:
王诗峣 2019-01-08 13:57:56 +08:00 committed by Juergen Hoeller
parent abc68ef8ea
commit b94e8c4bef
1 changed files with 4 additions and 4 deletions

View File

@ -270,7 +270,7 @@ public class FormHttpMessageConverter implements HttpMessageConverter<MultiValue
throws IOException, HttpMessageNotWritableException {
if (!isMultipart(map, contentType)) {
writeForm((MultiValueMap<String, String>) map, contentType, outputMessage);
writeForm((MultiValueMap<String, Object>) map, contentType, outputMessage);
}
else {
writeMultipart((MultiValueMap<String, Object>) map, outputMessage);
@ -292,7 +292,7 @@ public class FormHttpMessageConverter implements HttpMessageConverter<MultiValue
return false;
}
private void writeForm(MultiValueMap<String, String> formData, @Nullable MediaType contentType,
private void writeForm(MultiValueMap<String, Object> formData, @Nullable MediaType contentType,
HttpOutputMessage outputMessage) throws IOException {
contentType = getMediaType(contentType);
@ -325,7 +325,7 @@ public class FormHttpMessageConverter implements HttpMessageConverter<MultiValue
}
}
protected String serializeForm(MultiValueMap<String, String> formData, Charset charset) {
protected String serializeForm(MultiValueMap<String, Object> formData, Charset charset) {
StringBuilder builder = new StringBuilder();
formData.forEach((name, values) ->
values.forEach(value -> {
@ -336,7 +336,7 @@ public class FormHttpMessageConverter implements HttpMessageConverter<MultiValue
builder.append(URLEncoder.encode(name, charset.name()));
if (value != null) {
builder.append('=');
builder.append(URLEncoder.encode(value, charset.name()));
builder.append(URLEncoder.encode(String.valueOf(value), charset.name()));
}
}
catch (UnsupportedEncodingException ex) {