我将 Apache wink 用于我的 RESful 服务。我有两种方法,如下所示,
@POST
@Produces("multipart/mixed")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public BufferedOutMultiPart dummyMethod(@Context HttpServletRequest profileRegisterRequest){
}
@POST
@Produces("multipart/mixed")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public BufferedOutMultiPart dummyMethod(InMultiPart inMultiPart){
}
和这样的 HTML 表单
<form action="someurl" method="post" enctype="multipart/form-data">
// some elements
</form>
当我提交表单时,执行了使用 multipart 的方法。这按预期工作。
但是当我将表单的 enctype 更改为“application/x-www-form-urlencoded”时,如下所示,
<form action="someurl" method="post" enctype="application/x-www-form-urlencoded">
// some elements
</form>
执行使用 multipart 的方法。我不期待这种行为。我需要执行第一种方法。
我将从表单中删除多部分内容,为了向后兼容,我不会删除提供多部分的方法。
注意:我需要这两种方法都可以工作,因为我可能会在表单中获得多部分内容。即使表单中没有多部分内容,也可以使用 enctype="multipart/form-data" 保留表单。但我认为它不是 REST 服务标准。