2.7.11.3. 将多部分表单映射到 POJO
如果您对多部分/格式数据数据包有精确的了解,您可以将它们映射到 POJO 类或从 POJO 类中进行映射。这通过 org.jboss.resteasy.annotations.providers.multipart.MultipartForm
注释(@MultipartForm
)和 JAX-RS @FormParam
注释来实现。为此,您需要使用至少一个默认构造器定义 POJO,并使用 @FormParams
给其字段和/或属性标注。如果要创建输出,还必须使用
s。
org.jboss.resteasy.annotations.providers.multipart.PartType(
@PartType)标记
这些 @FormParam
示例:将多组件表单映射到 POJO
public class CustomerProblemForm { @FormParam("customer") @PartType("application/xml") private Customer customer; @FormParam("problem") @PartType("text/plain") private String problem; public Customer getCustomer() { return customer; } public void setCustomer(Customer cust) { this.customer = cust; } public String getProblem() { return problem; } public void setProblem(String problem) { this.problem = problem; } }
在定义了 POJO 类后,您可以使用它来表示 多部分/格式数据
。
示例:提交 CustomerProblemForm
@Path("portal") public interface CustomerPortal { @Path("issues/{id}") @Consumes("multipart/form-data") @PUT public void putProblem(@MultipartForm CustomerProblemForm, @PathParam("id") int id); } // Somewhere using it: { CustomerPortal portal = ProxyFactory.create(CustomerPortal.class, "http://example.com"); CustomerProblemForm form = new CustomerProblemForm(); form.setCustomer(...); form.setProblem(...); portal.putProblem(form, 333); }
@MultipartForm
注释告知 RESTEasy 对象具有 @FormParam
,并且应当从中托管。您还可以使用相同的对象来接收多部分数据。
示例:接收 客户ProblemForm
@Path("portal") public class CustomerPortalServer { @Path("issues/{id}) @Consumes("multipart/form-data") @PUT public void putIssue(@MultipartForm CustomerProblemForm, @PathParam("id") int id) { ... write to database... } }