6

RestEasy Web サービスから Excel ファイルを作成/返したいのですが、うまく動作しません。以下のコード (疑似コード) を実行すると、次のエラーが発生します。

org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: タイプの応答オブジェクトの MessageBodyWriter が見つかりませんでした: メディア タイプの java.io.FileOutputStream: application/vnd.ms-excel

ここにいくつかのコードがあります

@POST
@Path("/exportMyData")
@Produces("application/vnd.ms-excel")
public Response getMyData(@FormParam("id") String id) {
    HSSFWorkbook hwb = new HSSFWorkbook();
    ResponseBuilder response = null;
    try{
        List<Alert> alertList= service.getAlerts(id);


        HSSFSheet sheet =  hwb.createSheet("new sheet");

        HSSFRow rowhead=   sheet.createRow((short)0);
        rowhead.createCell((int) 0).setCellValue("ID");
        rowhead.createCell((int) 1).setCellValue("Name");
        rowhead.createCell((int) 2).setCellValue("Age");


        for(Alert alert : alertList){
            HSSFRow row=   sheet.createRow((short)1);
            row.createCell((int) 0).setCellValue(alert.getId());
            row.createCell((int) 1).setCellValue(alert.getName());
            row.createCell((int) 2).setCellValue(alert.getAge());
        }


        FileOutputStream fos = new FileOutputStream("mystream.xls");
        hwb.write(fos);
        response = Response.ok(fos);            
        response.header("Content-disposition","attachment; filename=export.xls");
    }catch(Exception e){

    }

    return response.build();
}

何か案は?前もって感謝/エリック

4

3 に答える 3

8

次のようにするとうまくいくことがわかりました。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
hwb.write(baos);
response = Response.ok(baos.toByteArray());
response.header("Content-disposition", "attachment; filename=export.xls");
于 2013-10-28T19:29:50.977 に答える
0

MessageBodyWriter/MessageBodyReader インターフェイスを使用して、カスタムの mediaType を作成する必要があります。これを参照してください ( How to handle/create new content-type/MediaType in JAX-RS? )。

于 2013-07-11T08:15:53.543 に答える
0

Excel を返却するという要件には、RestEasy は必要ありません。これは、プレーンな古いサーブレットを使用して実行できます。

RestEasy は、XML、JSON、またはプレーン テキストを返す REST サービスを実装するためのものです。@Produces は "application/vnd.ms-excel" をサポートしていません。

于 2012-12-24T00:52:36.890 に答える