|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.springframework.http.converter.FormHttpMessageConverter
public class FormHttpMessageConverter
Implementation of HttpMessageConverter that can handle form data, including multipart form data
(i.e. file uploads).
This converter can write the application/x-www-form-urlencoded and multipart/form-data media
types, and read the application/x-www-form-urlencoded) media type (but not multipart/form-data).
In other words, this converter can read and write 'normal' HTML forms (as
MultiValueMap<String, String>), and it can write multipart form (as
MultiValueMap<String, Object>. When writing multipart, this converter uses other
HttpMessageConverters to write the respective MIME parts. By default, basic converters
are registered (supporting Strings and Resources, for instance); these can be overridden by setting
the partConverters property.
For example, the following snippet shows how to submit an HTML form:
RestTemplate template = new RestTemplate(); // FormHttpMessageConverter is configured by default
MultiValueMap<String, String> form = new LinkedMultiValueMap<String, String>();
form.add("field 1", "value 1");
form.add("field 2", "value 2");
form.add("field 2", "value 3");
template.postForLocation("http://example.com/myForm", form);
The following snippet shows how to do a file upload:
MultiValueMap<String, Object> parts = new LinkedMultiValueMap<String, Object>();
parts.add("field 1", "value 1");
parts.add("file", new ClassPathResource("myFile.jpg"));
template.postForLocation("http://example.com/myFileUpload", parts);
Some methods in this class were inspired by MultipartRequestEntity.
MultiValueMap| Constructor Summary | |
|---|---|
FormHttpMessageConverter()
|
|
| Method Summary | |
|---|---|
boolean |
canRead(Class<?> clazz,
MediaType mediaType)
Indicates whether the given class can be read by this converter. |
boolean |
canWrite(Class<?> clazz,
MediaType mediaType)
Indicates whether the given class can be written by this converter. |
protected byte[] |
generateMultipartBoundary()
Generate a multipart boundary. |
protected String |
getFilename(Object part)
Returns the filename of the given multipart part. |
List<MediaType> |
getSupportedMediaTypes()
Return the list of MediaType objects supported by this converter. |
MultiValueMap<String,String> |
read(Class<? extends MultiValueMap<String,?>> clazz,
HttpInputMessage inputMessage)
Read an object of the given type form the given input message, and returns it. |
void |
setCharset(Charset charset)
Sets the character set used for writing form data. |
void |
setPartConverters(List<HttpMessageConverter<?>> partConverters)
Set the message body converters to use. |
void |
write(MultiValueMap<String,?> map,
MediaType contentType,
HttpOutputMessage outputMessage)
Write an given object to the given output message. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public FormHttpMessageConverter()
| Method Detail |
|---|
public void setPartConverters(List<HttpMessageConverter<?>> partConverters)
public void setCharset(Charset charset)
public boolean canRead(Class<?> clazz,
MediaType mediaType)
HttpMessageConverter
canRead in interface HttpMessageConverter<MultiValueMap<String,?>>clazz - the class to test for readabilitymediaType - the media type to read, can be null if not specified. Typically the value of a
Content-Type header.
true if readable; false otherwise
public boolean canWrite(Class<?> clazz,
MediaType mediaType)
HttpMessageConverter
canWrite in interface HttpMessageConverter<MultiValueMap<String,?>>clazz - the class to test for writabilitymediaType - the media type to write, can be null if not specified. Typically the value of an
Accept header.
true if writable; false otherwisepublic List<MediaType> getSupportedMediaTypes()
HttpMessageConverterMediaType objects supported by this converter.
getSupportedMediaTypes in interface HttpMessageConverter<MultiValueMap<String,?>>
public MultiValueMap<String,String> read(Class<? extends MultiValueMap<String,?>> clazz,
HttpInputMessage inputMessage)
throws IOException,
HttpMessageNotReadableException
HttpMessageConverter
read in interface HttpMessageConverter<MultiValueMap<String,?>>clazz - the type of object to return. This type must have previously been passed to the
canRead method of this interface, which must have returned true.inputMessage - the HTTP input message to read from
IOException - in case of I/O errors
HttpMessageNotReadableException - in case of conversion errors
public void write(MultiValueMap<String,?> map,
MediaType contentType,
HttpOutputMessage outputMessage)
throws IOException,
HttpMessageNotWritableException
HttpMessageConverter
write in interface HttpMessageConverter<MultiValueMap<String,?>>map - the object to write to the output message. The type of this object must have previously been
passed to the canWrite method of this interface, which must have returned true.contentType - the content type to use when writing. May be null to indicate that the
default content type of the converter must be used. If not null, this media type must have
previously been passed to the canWrite method of this interface, which must have
returned true.outputMessage - the message to write to
IOException - in case of I/O errors
HttpMessageNotWritableException - in case of conversion errorsprotected byte[] generateMultipartBoundary()
Default implementation returns a random boundary. Can be overridden in subclasses.
protected String getFilename(Object part)
Content-Disposition header.
Default implementation returns Resource.getFilename() if the part is a Resource, and
null in other cases. Can be overridden in subclasses.
part - the part to determine the file name for
null if not known
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||