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

Spring MVC中所需的字符串参数不存在错误

田翰林
2023-03-14

我尝试在Spring MVC中对我的控制器进行AJAX查询。

我的操作代码是:

@RequestMapping(value = "events/add", method = RequestMethod.POST)
public void addEvent(@RequestParam(value = "start_date") String start_date, @RequestParam(value = "end_date") String end_date, @RequestParam(value = "text") String text, @RequestParam(value = "userId") String userId){
    //some code    
}

我的Ajax查询是:

$.ajax({
        type: "POST",
        url:url,
        contentType: "application/json",
        data:     {
                start_date:   scheduler.getEvent(id).start_date,
                end_date:  scheduler.getEvent(id).end_date,
                text: scheduler.getEvent(id).text,
                userId: userId
        },
        success:function(result){
         //here some code
        }
    });

但我有个错误:

必需的字符串参数“start_date”不存在

为什么?正如我所知,我像(@requestparam(value=“start_date”)String start_date一样呈现了它

public class EventData {
    public String end_date;
    public String start_date;
    public String text;
    public String userId;
    //Getters and setters
}
$.ajax({
    type: "POST",
    url:url,
    contentType: "application/json",
    // data: eventData,
    processData: false,
    data:    JSON.stringify({
        "start_date":   scheduler.getEventStartDate(id),
        "end_date":  scheduler.getEventEndDate(id),
        "text": scheduler.getEventText(id),
        "userId": "1"
    }),

和控制器操作:

@RequestMapping(value = "events/add", method = RequestMethod.POST)
public void addEvent(@RequestBody EventData eventData){    
}

JSON数据如下:

end_date: "2013-10-03T20:05:00.000Z"
start_date: "2013-10-03T20:00:00.000Z"
text: "gfsgsdgs"
userId: "1"

共有1个答案

宫亦
2023-03-14

在服务器端,您希望您的请求参数作为查询字符串,但是在客户端,您发送一个json对象。要绑定json,您需要创建一个包含所有参数的类,并使用@RequestBody注释而不是@RequestParam。

@RequestMapping(value = "events/add", method = RequestMethod.POST)
public void addEvent(@RequestBody CommandBean commandBean){
    //some code
}

这里有一个更详细的解释。

 类似资料:
  • 我想从我的Android应用程序向Spring Boot发送post请求。我使用okhttp以JSON格式发送HTTP post请求。代码如下: 每次我使用Android请求发送post请求时,我都会收到400个错误的请求参数“name”不存在,“path”:“/newcustomer”。但当我使用postman时,它可以工作。

  • 我无法通过邮递员提出请求,我检查了所有内容,我的电子邮件在我的数据库中表示为varchar(255)。我使用后格雷姆。错误:必需的字符串参数“电子邮件”不存在。我使用响应并像这样设置它:每个接收值的字符串参数,但这没有帮助,因为程序报告我们没有发送任何东西。这与什么有关?请求是正确的,以及接受的参数是正确的。 请求看起来像什么: 实体用户 接受的控制器: 回购: 添加日志

  • 我有一个无法更改的spring API,它的post listener如下所示: 现在,我有另一个Spring boot API,需要在构建时发送POST请求,POST请求如下所示: ObjectWrapper如下所示: 当执行上述post请求时,它会从我这边引发异常 org.springframework.web.client.HttpClientErrorException$BadReques

  • 在从Tomcat 7.0.50升级到Tomcat 8.5.15期间,它停止识别我的一个方法的POST参数:我得到的不是正常的响应,而是以下消息 HTTP状态[400]-[错误请求] 类型状态报告 消息所需字符串参数'password'不存在 由于被认为是客户端错误(例如,格式错误的请求语法、无效的请求消息帧或欺骗性的请求路由),服务器无法或将不处理请求。 Apache Tomcat/8.5.15

  • 所以,我知道这可能是一个非常愚蠢的问题,我是一个初学者,试图学习Java基础知识,我有一个字符串数组的问题,我不太明白。当我尝试将单词输入到字符串数组中,并且单词的数量由用户设置(例如5)时,我总是可以少输入一个单词(例如4而不是5)。我的代码在下面。