当前位置: 首页 > 知识库问答 >
问题:

Spring MVC/Simple Post请求不起作用

太叔炎彬
2023-03-14

在我的spring MVC应用程序中,我试图发出一个简单的Post请求,但由于请求的主体,它不起作用。我在params中得到了嵌套对象,Spring抛出了这个异常:

org.springframework.beans.InvalidPropertyException: Invalid property 'contrats[0][nomFichier]' of bean class [fr.mnh.signweb.dto.InitSignatureRQDTO]: Property referenced in indexed property path 'contrats[0][nomFichier]' is neither an array nor a List nor a Map; returned value was [fr.mnh.signweb.dto.ContratDTO@1c74fdf]

下面是我的对象DTO:

@NoArgsConstructor
public class InitSignatureRQDTO {

    @Getter
    @Setter
    private String referenceFournisseur;
    @Getter
    @Setter
    private String produit;
    @Getter
    @Setter
    private String civilite;
    @Getter
    @Setter
    private String nom;
    @Getter
    @Setter
    private String prenom;
    @Getter
    @Setter
    private String email;
    @Getter
    @Setter
    private String telephone;
    @Getter
    @Setter
    private String rue;
    @Getter
    @Setter
    private String complementRue;
    @Getter
    @Setter
    private String codePostal;
    @Getter
    @Setter
    private String ville;
    @Getter
    @Setter
    private String pays;
    @Getter
    @Setter
    private List<ContratDTO> contrats;
    @Getter
    @Setter
    private String messageSms;

}

和:

@NoArgsConstructor
public class ContratDTO {

    @Getter
    @Setter
    private String nomFichier;
    /*@Getter
    @Setter
    private byte[] fichier;*/

}
@RequestMapping(value = "/initSign", method = RequestMethod.POST)
    public ResponseEntity launchSign(InitSignatureRQDTO initSignatureRQDTO) {

        System.out.println(initSignatureRQDTO);


    }
public ResponseEntity launchSign(@RequestBody InitSignatureRQDTO initSignatureRQDTO) 
@RequestMapping(value = "/initSign", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity launchSign(InitSignatureRQDTO initSignatureRQDTO) {

我拿到了这些日志:

DEBUG: org.springframework.web.servlet.DispatcherServlet - DispatcherServlet with name 'appServlet' processing POST request for [/initSign]
DEBUG: org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Looking up handler method for path /initSign
DEBUG: org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver - Resolving exception from handler [null]: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
DEBUG: org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver - Resolving exception from handler [null]: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
DEBUG: org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Resolving exception from handler [null]: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
DEBUG: org.springframework.web.servlet.DispatcherServlet - Null ModelAndView returned to DispatcherServlet with name 'appServlet': assuming HandlerAdapter completed request handling
DEBUG: org.springframework.web.servlet.DispatcherServlet - Successfully completed request

共有1个答案

薄哲
2023-03-14

您在POST请求正文中发送JSON内容,因此您需要在请求中使用内容类型为application/JSON

x-www-form-urlencoded;charset=utf-8在提交表单时使用。

 类似资料:
  • 问题内容: 我正在尝试向Swift发出发布请求。我的目标是将accesstoken facebook发布到服务器,但不起作用。这是代码: 答案如下: 问题答案: 通过这种方式,您可以使用POST Web服务:

  • 问题内容: 我正在通过jQuery的$ .ajax函数使用的第三方API上调用POST。但是,当我拨打电话时,出现以下错误: 我从这篇文章中看到这可能是Webkit的错误,所以我在Firefox中尝试了此操作(我正在使用Chrome开发),并且得到了相同的结果。 在这篇文章中,我还尝试通过将$.ajax函数的属性设置为并将设置为来使用jsonp。但是,这导致了500个内部服务器错误。 当我使用–d

  • 问题内容: 我有一个脚本,可以在按下当前元素时添加一个输入字段元素。当我使用innerHTML时,它将替换当前内容,这不是我想要的。所以我想appendChild应该添加而不是替换,但是它不起作用。这是我的剧本 和我的HTML内容。 还有我的addfile.php文件。 有输入吗?同样,innerHTML可以工作,appendChild不能工作。谢谢。 问题答案: parent.appendChi

  • 问题内容: 由于jQuery中的Ajax请求,存在未定义的错误。但是它在本地工作。jquery1.3.2.js @ 3633行中的错误引用 我的代码是: 代码中的警报向我显示(0,“未定义”); 我做错了什么? 问题答案: 如果您的ajax请求在完成之前被取消,则可能会发生这种情况。当用户通过刷新,单击链接或更改浏览器中的URL离开页面时,jQuery引发错误事件。通过为ajax调用实现错误处理程

  • 我到处都搜索了,但找不到答案,我怎么能发出HTTP请求?我尝试了几种可能性,但都不起作用。我总是出错。 02-27 17:52:58.611 13571-13571/com.example.app E/AndroidRuntime﹕ 致命异常:主java.lang.IllegalStateException:无法在android.view.view$1.onClick(view.java:3838

  • 我试图使用Axios,因为它是NodeJS中唯一具有异步/等待功能的模块。 我已经在Python脚本中有一个POST请求,它工作得很好,我正在尝试适应NodeJS服务器。 但我阻止了我的第一次发帖请求。如果我直接与请求模块一起使用,它工作得很好,请参阅我的代码: 使用Axios(或Axios实例,但稍后使用…)因为我需要保持我的会话(就像在Python中一样,它像一个符咒一样工作)。 而作为响应的