Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Spring MVC-RequestParameterException参数不存在_Javascript_Java_Ajax_Spring Mvc_Exception - Fatal编程技术网

Javascript Spring MVC-RequestParameterException参数不存在

Javascript Spring MVC-RequestParameterException参数不存在,javascript,java,ajax,spring-mvc,exception,Javascript,Java,Ajax,Spring Mvc,Exception,我的网站上最终出现了一个问题。它使用AJAX请求从服务器获取数据,服务器使用springmvc 发生的(间歇性)情况是,有时我们会遇到这样的异常: org.springframework.web.bind.MissingServletRequestParameterException: Required Integer parameter 'page' is not present at 这种异常发生在一些ajaxpost调用中(不仅仅是这种情况!!),我们仍然无法复制它来理解发生了什么 例

我的网站上最终出现了一个问题。它使用AJAX请求从服务器获取数据,服务器使用springmvc

发生的(间歇性)情况是,有时我们会遇到这样的异常:

org.springframework.web.bind.MissingServletRequestParameterException: Required Integer parameter 'page' is not present
at 
这种异常发生在一些ajaxpost调用中(不仅仅是这种情况!!),我们仍然无法复制它来理解发生了什么

例如,在其中一种情况下,参数“page”(用于在用户滚动页面时加载内容-因此它是必需的变量)通过一个AJAX调用发送,该调用具有一个“data”字段,其中页面参数来自如下表单:

<input type="hidden" name="page" id="page" value="1">
我们复制它的唯一方法是将其属性“name”更改为“page”以外的内容。但我想情况并非如此(大多数用户甚至不打开开发人员控制台…)

我在谷歌上搜索了很多次,并检查了所有的可能性。重唱没问题:

(Content-Type: application/x-www-form-urlencoded; charset=UTF-8) 
参数正常,AJAX看起来正常,一切都正常。。。但我们找不到发生了什么。我们已经尝试了很多可能性,但我们仍然无法强迫这些例外发生

我们的一个假设是,有时AJAX可能发送空数据块,而不带任何参数。但我们甚至不知道它是否真实,也不知道如何检查它的真实性

有什么可能性?如何进行测试

编辑:
我们可以复制一种获得异常的方法:重复重新加载页面几秒钟(按住重新加载键一段时间)。有没有办法防止这种情况的例外

对页参数的控制器类方法进行以下更改 @RequestParam(defaultValue=0)int页


或者将控制器方法粘贴到此处。

如果无法找出缺少参数的原因,则可以添加

public void controllerMethodName (@RequestParam(required = false) int page)

控制器定义中的代码,如果ajax请求中不存在参数,则不会引发任何异常。

您确定表单不会同时被修改吗?例如,如果用于处理页面滚动的库尝试在很短的时间内发送相同的表单(第一个调用更新表单,第二个调用序列化表单)。这可能只是在某些浏览器上,而不是在所有浏览器上,因为您无法轻松复制它

将数据放回表单的方式也可能是造成问题的原因


记录HTTP请求/使用分析可以帮助您确定哪些请求/用户代理导致问题。

您可以记录服务器上收到的HTTP请求吗?这可能有助于诊断问题。你能展示一下你是如何在控制器中定义你的方法的吗?在我看来,你把参数页作为mandatory@Sudakatux参数必须是强制性的,这就是问题所在!每次执行AJAX调用时,它都应该在那里。盖尔:我对此不确定。我应该如何记录服务器上收到的HTTP请求?问题是,我不知道是否可以为每个HTTP请求(例如,来自这个特定ajax调用)生成一个日志文件,因为它每小时有100.000个条目。。。可能只有0.001%会给我一个例外,对于这种情况,我建议捕获前端错误并将其发送到分析或类似的东西。你可以有各种拦截器。粘贴你的
控制器
代码。是的,我知道,但实际上这个参数必须按预期工作。。。方法是“好的”,当我们尝试测试它时,它总是工作的,但问题是有时一些用户遇到了抛出所描述的异常的问题。是的,我知道,但实际上这个参数必须按预期工作。。。该方法是“好的”,当我们尝试测试它时,它总是有效的,但问题是,有时一些用户遇到抛出所描述的异常的问题。
public void controllerMethodName (@RequestParam(required = false) int page)