2016-03-31 39 views
2

我正在制作一个Spring MVC Web应用程序。 问题是,单个方法被调用两次,我不知道为什么。弹簧控制器方法调用两次

@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方法的第二个电话后,它要我的看法

任何其他方法做工精细。 有人知道这里有什么问题吗?

*我也是从here..nothing阅读类似的问题,帮助

LE:我也在评论说。 有趣的是,如果我将o模型设置为视图,则在方法的第二次调用中,我的视图从第一次调用中获得模型。 (在第二个电话上,ID为0,模型为空)

+0

清理您的项目并重新运行 –

+0

您可以尝试启用弹簧调试日志吗?并看看发生了什么 – ravi

+0

subbu,我也没有工作。 Ravi,我会尝试 – UnguruBulan

回答

1

我终于得到了一些时间在这里找到一个解决方案。 尝试了很多事情,但它没有奏效。

我取代@PathVariable与@RequestParam和URL不被访问两次:)

+3

好的。但为什么?!?!? –

+0

可能是由于CORS的启用?然而,我有同样的问题,仍然没有找到解决办法,因此我不能接受这个答案。 – Timmy

+0

该解决方案对我而言也不适用。 –

0

听起来像客户端的问题。

  • 打开你的浏览器,输入/演示/帐号/资料/ f91b3a38-6921-41e0-98b7-58dff5cb1152 并检查日志 有机会,你会看到只有一个入口

  • 现在运行您的客户端代码并检查对该服务的网络请求。如果你打电话给浏览器的控制器,如铬F12->网络选项卡应该帮助。

我知道它是一种明显的,但我觉得没有什么真正的“不寻常”,在此控制器,所以它应该是更加的一般流程的水平。在这种情况下,也许它的最佳跟踪HTTP流量,看看有多少/时/它是如何产生的请求到控制器

希望这有助于

+0

已经尝试过第一件事,但它仍然被调用两次。我会尝试你的第二个建议 – UnguruBulan

+0

它是certanly不,我使用soap ui和来自开发人员工具的浏览器网络选项卡,所以我知道只有一个请求熄灭。 – Timmy

1

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

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

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