2017-02-21 137 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的任何位置。但是,在这里我怎么能把这个注释?如果有人有想法,请分享。

相关问题