我正在制作一个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)
我还观察到一个GET请求导致控制器方法执行两次。使用Chrome浏览器请求服务时出现问题(使用Postman时未出现此问题)。在我的情况下,罪魁祸首是JSONView Chrome扩展。
我使用Chrome开发者工具的“网络”标签确定了原因。它显示我的GET服务被请求了两次。第二个请求是由content.js发起的,这是一个与JSONView捆绑在一起的JavaScript文件。
禁用JSONView扩展后,通过Chrome的GET请求将导致控制器方法只执行一次。
我终于有时间在这里找到解决方案。试了很多东西,但没办法。
我用@RequestParam替换了@PathVariable,并且访问的URL没有两次:)
我遇到了这种被称为两次的现象,因为BrowserSync在每个打开的BrowserSync浏览器窗口中重放了HTTP请求。
听起来像客户端的问题。
我知道这是一种显而易见的,但我认为在这个控制器中没有什么真正“不寻常”,所以它应该更多地处于一般流程的水平。在这种情况下,最好跟踪HTTP流量并查看它向控制器生成请求的次数/时间/方式
希望这可以帮助
有同样的问题。最终我发现我在背景图像网址中有一个null
,如下所示:
style="background-image: url(null);"
导致使用路径变量null
发送另一个GET。