我正在制作一个Spring MVC网络应用。 问题是单一方法被调用两次,我不知道为什么。
@RequestMapping(value="/profile/{id}", method = RequestMethod.GET)
public String displayUserProfile( @PathVariable String id) {
System.out.println("asdasddsasd");
return "account/userProfile";
}
我评论了这个方法的很多行,但仍然没有用。还试图返回其他视图..祝你好运。
在控制台中(写入ulr请求):
/demo/account/profile/f91b3a38-6921-41e0-98b7-58dff5cb1152
asdasddsasd
/demo/account/profile/0
asdasddsasd
在第二次使用tihs方法之后,它会进入我的视野
任何其他方法都可以正常工作。 有谁知道这里的问题是什么?
*我也从这里读到类似的问题......没有任何帮助
LE:我在评论中也说了些什么。 有趣的是,如果我将模型设置为视图,则在方法的第二次调用中,我的视图从第一次调用获得模型。 (在第二次调用时,id为0,模型为null)
答案 0 :(得分:4)
我还观察到一个GET请求导致控制器方法执行两次。使用Chrome浏览器请求服务时出现问题(使用Postman时未出现此问题)。在我的情况下,罪魁祸首是JSONView Chrome扩展。
我使用Chrome开发者工具的“网络”标签确定了原因。它显示我的GET服务被请求了两次。第二个请求是由content.js发起的,这是一个与JSONView捆绑在一起的JavaScript文件。
禁用JSONView扩展后,通过Chrome发出的GET请求会导致控制器方法只执行一次。
答案 1 :(得分:1)
我终于有时间在这里找到解决方案。 试了很多东西,但没办法。
我用@RequestParam替换了@PathVariable,并且没有访问过两次URL:)
答案 2 :(得分:0)
在客户端听起来像是一个问题。
打开浏览器,输入 / demo / account / profile / f91b3a38-6921-41e0-98b7-58dff5cb1152 并检查日志 您可能只会看到一个条目
现在运行您的客户端代码并检查对该服务的网络请求。如果您从浏览器调用控制器,如chrome F12->网络选项卡应该有帮助。
我知道它有一种显而易见的,但我认为在这个控制器中没有什么真正“不寻常”,所以它应该更多地处于一般流程的水平。在这种情况下,最好跟踪HTTP流量并查看它向控制器生成请求的次数/时间/方式
希望这有帮助
答案 3 :(得分:0)
有同样的问题。
最终,我发现我在背景图片网址中有一个null
,如下所示:
style="background-image: url(null);"
导致发送另一个带有路径变量null
的GET。
答案 4 :(得分:0)
我遇到了这种称为“两次”的现象,因为 BrowserSync 在每个打开的BrowserSync浏览器窗口中都重放了HTTP请求。
答案 5 :(得分:0)
我遇到了同样的问题,找到了很多解决方案,最后我找到了简单的原因。在我的html模板css中:background:url()。 这种情况会再次运行相同的网址。因此,我只需将其删除或将url放在括号中即可。