Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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
Java Spring控制器方法调用两次_Java_Spring_Spring Mvc - Fatal编程技术网

Java Spring控制器方法调用两次

Java Spring控制器方法调用两次,java,spring,spring-mvc,Java,Spring,Spring Mvc,我正在制作一个Spring MVC web应用程序。 问题是,一个方法调用两次,我不知道为什么 @RequestMapping(value="/profile/{id}", method = RequestMethod.GET) public String displayUserProfile( @PathVariable String id) { System.out.println("asdasddsasd"); return "account/userProfile";

我正在制作一个Spring MVC web应用程序。 问题是,一个方法调用两次,我不知道为什么

@RequestMapping(value="/profile/{id}", method = RequestMethod.GET)
public String displayUserProfile( @PathVariable String id) {

    System.out.println("asdasddsasd");

    return "account/userProfile";

}
我对这个方法的许多行进行了注释,但仍然不起作用。还试图返回其他视图..没有好运

在控制台中(写入ulr请求):

在第二次调用tihs方法之后,它将转到我的视图

任何其他方法都可以。 有人知道这里有什么问题吗

*我也从这里读到了类似的问题……没有任何帮助

乐:我在评论中也说过。
有趣的是,如果我将o模型设置为视图,在方法的第二次调用中,我的视图从第一次调用中得到模型。(在第二次调用中,id为0,模型为空)

听起来像是客户端的问题

  • 打开浏览器,输入
    /demo/account/profile/f91b3a38-6921-41e0-98b7-58dff5cb1152
    并检查日志。您很可能只看到一个条目

  • 现在运行客户端代码并检查对服务的网络请求。如果您正在从浏览器中调用控制器,如Chrome F12->网络选项卡应该会有所帮助


我知道这是一种明显的现象,但我认为在这个控制器中没有什么真正的“不寻常”,所以它应该更多地处于一般流的水平。在这种情况下,最好跟踪HTTP通信量,并查看它向控制器生成请求的次数/时间/方式。

我终于有时间在这里找到解决方案。 尝试了很多事情,但都没有成功


我将@PathVariable替换为@RequestParam,URL不会被访问两次:)

我还观察到一个GET请求导致控制器方法执行两次。使用Chrome浏览器请求服务时出现问题(使用Postman时未出现问题)。在我的案例中,罪魁祸首是JSONView Chrome扩展

我使用Chrome开发者工具的网络选项卡确定了原因。它显示我的GET服务被请求了两次。第二个请求由content.js发起,它是一个与JSONView捆绑在一起的JavaScript文件

禁用JSONView扩展后,通过Chrome的GET请求将导致控制器方法只执行一次。

也有同样的问题。 最终,我发现在背景图像url中有一个
null
,如下所示:

style=“背景图像:url(空);”


这导致发送另一个带有路径变量
null
的GET

我经历了这种“两次调用”现象,因为BrowserSync在每个打开的BrowserSync浏览器窗口中重播HTTP请求。

我也遇到了同样的问题,找到了很多解决方案,最后我找到了简单的原因。它在我的html模板css:background:url()中。
此cold将再次运行相同的url。所以我只是把它去掉或者把url放在括号里,它就可以工作了。

清理你的项目,重新运行Inga你试着启用spring调试日志吗?看看发生了什么苏布,我也没工作。拉维,我会试试这个方法是如何被调用的?你能把那个密码贴出来吗。你也尝试过使用REST客户端点击url吗?你也可以粘贴你的html吗?已经尝试了第一件事,但仍然调用了两次。我将尝试您的第二个建议。当然不是,我正在使用开发者工具中的soap ui和浏览器网络选项卡,所以我知道只有一个请求发出。可能是由于启用了CORS?然而,我有同样的问题,仍然没有找到解决方案,因此我不能接受这个答案。我有同样的问题,我不知道它是哪个扩展。。。只是最。。。在我的例子中,网络标签只显示了一个GET请求,但我在Spring端仍然得到了两个点击。。。奇怪。您可以查看嵌入式服务器日志来验证应用程序是否只接收到一个请求。下面是一个堆栈溢出链,它讨论了Spring中的嵌入式服务器日志记录。。。也许是Chrome和BrowserSync的组合!?PUT请求也存在同样的问题。首先它发送新数据,200-800毫秒后它发送旧数据,这使我的更改消失。但当我关闭Chrome开发者工具视图时,它就消失了……也许,它是Chrome与BrowserSync的组合!?PUT请求也存在同样的问题。首先它发送新数据,200-800毫秒后它发送旧数据,这使我的更改消失。但是一旦我关闭了Chrome开发者工具视图,它就消失了……在我的例子中,因为我在运行浏览器同步时,在2个不同的浏览器中打开了两次相同的页面。一点,这样你的新答案在将来对用户更有用。
/demo/account/profile/f91b3a38-6921-41e0-98b7-58dff5cb1152
asdasddsasd
/demo/account/profile/0
asdasddsasd