2016-03-31 71 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請求會導致控制器方法只執行一次。