【问题标题】:Send JSON and FormData (Angular to Spring)发送 JSON 和 FormData(Angular 到 Spring)
【发布时间】:2021-01-02 16:04:38
【问题描述】:

角度

register(usuario:any, id: File): Observable<any>{

 let formData = new FormData();
 
 formData.append("user", JSON.stringify({username:'Userr'}));
 formData.append("file", id);

 return this.http.post(AUTH_API + 'signup', formData);

代码 enter image description here

春天

@PostMapping(value = "/signup")
    public ResponseEntity<?> registerUser( @RequestParam SignupRequest user,
            @RequestParam("file") MultipartFile archivo) {
         
    
        System.out.println(archivo.getSize());
        System.out.println(user.getUsername());
}

错误 2021-01-02 16:50:55.397 WARN 15076 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver:已解决 [org.springframework.web.method.annotation.MethodArgumentConversionNotSupportedException:

无法将“java.lang.String”类型的值转换为所需的“SignupRequest”类型;

嵌套异常是 java.lang.IllegalStateException:无法将类型“java.lang.String”的值转换为所需类型“com.AreMyNews.Request.SignupRequest”:找不到匹配的编辑器或转换策略]

【问题讨论】:

    标签: angular spring


    【解决方案1】:

    对 SignupRequest 用户使用 @ModelAttribute 而不是 @RequestParam。

    PostMapping(value = "/signup")
        public ResponseEntity<?> registerUser( @ModelAttribute SignupRequest user,
                @RequestParam("file") MultipartFile archivo) {
             
        
            System.out.println(archivo.getSize());
            System.out.println(user.getUsername());
    }
    

    【讨论】:

    • 它不起作用,用户名在modelAttribute中为空
    • 尝试@ModelAttribute("user") SignupRequest 用户
    • 另外,请注意,您提到了 JSON.stringfy({username:'Userr'})。因此,在您的 SignupRequest 类中,字段名称应该是用户名
    猜你喜欢
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 2016-04-19
    • 2018-09-11
    • 2017-02-09
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多