sda*_*sdf 9 java rest spring spring-mvc spring-boot
我想将一个对象发送到控制器,该控制器有几个带文件的列表和几个带纯文本的字段.
public class ContributionNew<T extends MovieInfoDTO> {
private List<T> elementsToAdd;
private Map<Long, T> elementsToUpdate;
private Set<Long> idsToDelete;
private Set<String> sources;
private String comment;
}
public class Photo extends MovieInfoDTO {
private MultipartFile photo;
}
@PostMapping(value = "/{id}/contributions/photos")
@ResponseStatus(HttpStatus.CREATED)
public
ResponseEntity<Void> createPhotoContribution(
@ApiParam(value = "The movie ID", required = true)
@PathVariable("id") final Long id,
@ApiParam(value = "The contribution", required = true)
@RequestBody @Valid final ContributionNew<Photo> contribution
) {
Run Code Online (Sandbox Code Playgroud)
我正在使用邮递员发送数据.然而,他把我扔了
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=----WebKitFormBoundarywY7ByvgonAjDoaCT;charset=UTF-8' not supported
Run Code Online (Sandbox Code Playgroud)
我应该为这个控制器设置Content-type,以便我可以发送一个包含纯文本字段和带文件列表的对象?
如果我在标题中设置标题
Content-type: multipart/form-data; charset=utf-8
Run Code Online (Sandbox Code Playgroud)
它把我扔进了控制台
org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
Run Code Online (Sandbox Code Playgroud)
如前所述,dknight @RequestBody表示将JSON或XML数据与DTO bean映射一起使用。如果是MultipartFile,则不能使用JSON数据,因此不能使用@RequestBody。尝试使用@ModelAttribute批注。
工作样本:
@PostMapping("/promoters")
@Timed
public ResponseEntity<PromoterDTO> createPromoter(@ModelAttribute PromoterDTO promoterDTO) throws URISyntaxException { ... }
Run Code Online (Sandbox Code Playgroud)
使用PromoterDTO像这样:
public class PromoterDTO implements Serializable {
private Long id;
private String name;
private String address;
private MultipartFile logo;
}
Run Code Online (Sandbox Code Playgroud)
大家好,只需将 @RequestBody 更改为 @ModelAttribute
public ResponseEntity<DTO> exemple(@ModelAttribute Dto dto) throws TechnicalException
Run Code Online (Sandbox Code Playgroud)
快乐编码。
小智 5
import org.springframework.web.bind.annotation.ModelAttribute;
Run Code Online (Sandbox Code Playgroud)
使用@ModelAttribute而不是@RequestBody. 这对我有用。
| 归档时间: |
|
| 查看次数: |
27092 次 |
| 最近记录: |