1

RESful サービスに Apache wink を使用しています。以下のような2つの方法があります。

@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>

フォームを送信すると、マルチパートを消費するメソッドが実行されます。これは期待どおりに機能しています。

しかし、以下のようにフォームの enctype を "application/x-www-form-urlencoded" に変更すると、

<form action="someurl" method="post" enctype="application/x-www-form-urlencoded">
    //   some elements
    </form>

マルチパートを消費するメソッドが実行されます。私はこの振る舞いを期待していません。最初のメソッドを実行する必要があります。

フォームからマルチパート コンテンツを削除しますが、下位互換性のために、マルチパートを提供するメソッドを削除するつもりはありません。

注: フォーム内でマルチパート コンテンツを取得する可能性があるため、両方のメソッドが機能している必要があります。フォームにマルチパート コンテンツがない場合でも、 enctype="multipart/form-data" を使用してフォームを離れると機能します。しかし、REST サービスの標準ではないと思います。

4

0 に答える 0