20.8. Output with multipart/form-data

RESTEasy provides a simple API to output multipart/form-data.
package org.jboss.resteasy.plugins.providers.multipart;

public class MultipartFormDataOutput extends MultipartOutput
{
   public OutputPart addFormData(String key, Object entity, MediaType mediaType)

   public OutputPart addFormData(String key, Object entity, GenericType type, MediaType mediaType)

   public OutputPart addFormData(String key, Object entity, Class type, Type genericType, MediaType mediaType)

   public Map<String, OutputPart> getFormData()
}

To output multipart/form-data, create a MultipartFormDataOutput object and call addFormData() methods. RESTEasy automatically locates a MessageBodyWriter to marshal your entity objects. As with MultipartInput, your marshaling may be sensitive to generic type metadata. In this case, use GenericType. The example below returns a multipart/form-data format to a calling client. The parts are JAXB-annotated Customer objects, which will be marshaled into application/xml.
   @Path("/form")
   public class MyService
   {
      @GET
      @Produces("multipart/form-data")
      public MultipartFormDataOutput get()
      {
         MultipartFormDataOutput output = new MultipartFormDataOutput();
         output.addPart("bill", new Customer("bill"), MediaType.APPLICATION_XML_TYPE);
         output.addPart("monica", new Customer("monica"), MediaType.APPLICATION_XML_TYPE);
         return output;
      }