我需要从Post请求MultipartFile上传,并从JSON映射一个类。我的控制器代码如下所示:
@PostMapping(value = API_FILE_DIRECT_ENDPOINT,
consumes = {MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_JSON_VALUE }, produces = MediaType.APPLICATION_JSON_VALUE)
FileDto create( @RequestParam("file") @NotNull MultipartFile multipartFile,
@PathVariable( IbsAttachmentServiceApi.FILE_TYPE_KEY) String type,
@RequestParam("dto") @NotNull ApplyingFileDto applyingFileDto){
FileDto result= process(applyingFileDto, multipartFile);
return result;
}
当我试着从邮递员那里查询时,像这样
但这给了我一个错误
"Failed to convert value of type 'java.lang.String' to required type 'com.domain.ibs.attachment.model.ApplyingFileDto'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'com.domain.ibs.attachment.model.ApplyingFileDto': no matching editors or conversion strategy found"
@RequestParam("dto") @NotNull String applyingFileDto) ...
ApplyingFileDto mappedDto = objectMapper.readValue(applyingFileDto, ApplyingFileDto.class);
有没有办法配置编辑器在@RequestParam之后映射它?
我已经找到了答案的解决方案。需要添加@RequestPart注释,而不是像这样添加@RequestParam
@PostMapping(value = API_FILE_DIRECT_ENDPOINT,
consumes = {MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_JSON_VALUE }, produces = MediaType.APPLICATION_JSON_VALUE)
FileDto create( @RequestParam("file") @NotNull MultipartFile multipartFile,
@PathVariable( IbsAttachmentServiceApi.FILE_TYPE_KEY) String type,
@RequestPart("dto") @NotNull ApplyingFileDto applyingFileDto){
FileDto result= process(applyingFileDto, multipartFile);
return result;
}
则原因在于不同类型的转换器。这里提到
注意,@RequestParam注释还可以用于将“multipart/form-data”请求的部分与支持相同方法参数类型的方法参数相关联。主要区别在于,当方法参数不是字符串或原始的MultipartFile/Part时,@RequestParam依赖于通过注册的转换器或PropertyEditor进行的类型转换,而RequestPart依赖于HttpMessageConverters,同时考虑到请求部分的“Content-Type”标头。RequestParam可能用于名称-值表单字段,而RequestPart可能用于包含更复杂内容的部分,例如JSON、XML)。
这个例子也很有用
我正在使用Swagger编辑器来记录Node中内置的现有API,但它一直给我以下错误: 路径上的架构错误。/上载/Rate.post.parameters[0]不完全是来自 此错误出现在我代码的 3 个位置: paths./upload/Rate.post。参数[0] paths./upload/Rate.post。参数[1] paths./users/register.post.paramete
我使用的是Spring数据r2dbc,它不支持多对多映射。 表格:- 通常,一个用户可以有多个映射。 Sql查询, 从user u、user\u role\u mapping urm、user\u role ur中选择*其中u.user\u id=:userId和u.org\u id=:orgId和u.user\u id=urm。用户id和ur。role\u id=urm。角色\u id 这里,我
问题内容: 当我尝试从报表参数传递多个值时,BIRT存在问题。 我正在使用BIRT 2.6.2和Eclipse。 我正在尝试从级联参数组的最后一个参数“ JDSuser”中放入多个值。该参数允许具有多个值,并且我正在使用列表框。 为了能够做到这一点,我正在用where-in语句编写我的sql查询,其中我用javascript替换了文本。否则BIRT sql无法从report参数获取多个值。 我的S
大家好,我正在使用Java反射来调用方法,并将参数传递给这些方法。下面是示例代码 用于调用方法的一段代码 其中test=“method1”/“method2”/“method3” obj是基类的对象 上面的代码抛出的是NOSuchmethodException
本文向大家介绍JS函数多个参数默认值指定方法分析,包括了JS函数多个参数默认值指定方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS函数多个参数默认值指定方法。分享给大家供大家参考,具体如下: 函数有一个参数时,以往这样定义(参数为p1): 当需要为p1设定一个默认值时 当函数需要2个参数时,以前习惯这样写 后来发现完全不需要这样写,js函数甚至不需要在括弧内预设参数名,可以用一
问题内容: 我正在尝试通过带有POST请求的照片上传 根据自述文件,我应该能够做到这一点 问题是,这不起作用。我收到测试服务器的回复,说它转储了0个post变量。 我已经确认该HTML小页面服务器处于工作状态 所以问题是,请求模块在做什么?有没有更好的方法来发送节点? 问题答案: 经过更多研究后,我决定使用。这使得分段上传非常容易。