1

サービスに渡された json を使用して xls ファイルを返すサービスを作成しています。JAX-RS と WINk を使用しています。私のサービスに渡された json は複雑すぎて URL に @QueryParam を指定できないため、@GET の代わりに @POST メソッドを使用したいと考えています。

問題は、@GET を使用する場合、URL をブラウザーに貼り付けて、サービスから返されたファイルをダウンロードできることはわかっていますが、@POST を使用する場合、サービスから返されたファイルをダウンロードするにはどうすればよいでしょうか?

目標は、ユーザーがこのサービスにリクエストを投稿すると、「開く」、「ダウンロード」、または「キャンセル」のいずれかを尋ねるウィンドウがポップアップすることです。

4

1 に答える 1

2

最も簡単な方法は、HTML を使用することformです。

<form action="rest/report/users" method="post">
ID: <input type="text" name="id"><br>
<input type="submit">
</form>

@Path("/report")
public class ReportResource {

    @Path("users")
    @POST
    @Produces(MediaTypeUtils.MS_EXCEL)
    public Response getUsers(@FormParam("id") String id ) {

        // Build the report and get the instance of java.io.File

        ResponseBuilder response = Response.ok(file);
        response.header("Content-Disposition","attachment; filename=report.xls");
        return response.build();
    }
}

ChromeとIEで保存ダイアログを表示する魅力のように機能します。

于 2013-03-26T02:43:00.623 に答える