2017-02-21 96 views
0

在我的休息服務中,我試圖使用multipart/form-data上傳帶有JSON對象的文件。我在我的後端使用Resteasy MultipartFormDataInput處理請求和訪問文件和JSON對象是否支持resteasy自動將String/JSON MultipartFormDataInput映射到使用jackson的對象?

我可以像下面那樣處理我的文件和JSON對象;

@POST 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
public void uploadFile(MultipartFormDataInput input) throws IOException { 
    Map<String, List<InputPart>> uploadForm = input.getFormDataMap(); 
    List<InputPart> fileInputParts = uploadForm.get("uploadedFile"); 
    List<InputPart> jsonInputParts = uploadForm.get("content"); 

    //convert the uploaded file to inputstream 
    InputStream inputStream = fileInputParts.get(0).getBody(InputStream.class, null); 
    byte[] bytes = IOUtils.toByteArray(inputStream); 

    //Convert the uploaded JSON object 
    GenericRestBean bean = new ObjectMapper().readValue(jsonInputParts .get(0).getBodyAsString(), GenericRestBean.class); 

我正在使用傑克遜對象映射器來將主體字符串轉換爲JSON對象。這裏的問題是這個映射會忽略正常的bean驗證,我需要手動重新實現它。

是否resteasy支持自動映射字符串/ JSON部分使用傑克遜的對象?如果是,任何人都可以幫助我從MultipartFormDataInput對象中獲取此對象?

回答

0

通過進一步閱讀我能夠找到解決我的問題。我們可以使用GenericType解組輸入部分,如下所示;

GenericRestBean bean = content.get(0).getBody(new GnericType<GenericReferenceRestBean>() {}); 

但我仍然有問題與豆驗證。由於我們將bean驗證放入bean中,因此我們必須將@Valid註釋放在需要驗證該bean的任何位置。但是,在這裏我怎麼能把這個註釋?如果有人有想法,請分享。

相關問題