2013-01-15 53 views
0

請幫我解決這個荒謬的問題。 我從我的js形式使用window.open()函數,這將創下控制方法,也包括一些路徑變量.. 是傳遞一個URL,window.open()調用不會觸及控制器的第一次

myUrl = "controller/"+pathVar1+"/"+pathVar2+"/controllerMethod?AUTH_TOKEN=" + getAuthTokenId() +"&"; 

window.open(myUrl,true); 

getAuthTokenId()被寫在我的「global.js」文件,並在控制器中我寫的方法

@Controller 
@RequestMapping("/controller") 
public class ControllerName{ 

    @RequestMapping(value = "/{pathVar1}/{pathVar2}/controllerMethod", method = RequestMethod.GET) 
    public @ResponseBody void ControllerMethodDefinition(HttpServletRequest request, HttpServletResponse response, @PathVariable("pathVar1") String pathVar1,@PathVariable("pathVar2") String pathVar2){ 
     /***/ 
    } 

} 

現在第一次時的JS在執行我的電話從JS是不打控制器,但下一次開始控制我的問題是每次都被擊中。

+0

嘗試使用瀏覽器插件工具來確定瀏覽器是否實際上是第一次發送請求。我通常使用名爲Tampterdata的firefox插件來顯示瀏覽器和服務器之間的請求和響應流量。如果請求發送到服務器,請查看它將要發往的URL。 –

回答

0

對於這個問題,調查的最佳方式是:

1)把alert('Before open ' + myUrl);alert('After open ' + myUrl);之前和你window.open()命令後,以確保它被執行。

2)System.out.println("Controller hit. Pathvar 1 = " + pathVar1 + "; Pathvar 2 = " + pathVar2);在您的控制器,以確保它真的命中。

我的猜測是,不知何故第一次你的URL沒有正確初始化,以便該命令不會運行。但無論什麼原因,在執行2次以上測試後應該清楚。

+0

長 非常感謝您的建議。 alert('打開之前'+ myUrl);和alert('打開之後'+ myUrl);兩者都正常工作,並且兩次都給出了相同的URL。同時,控制器方法受到了打擊。但當我點擊'確定'後打開警報然後發生了同樣的事情..所以部分我的目的已經服務,是控制器正在按預期做,但在第二次警報點擊確定後,我沒有控制程序..但從第二次起,它的工作正常.. – Ajijul

+0

@ user1978891:作爲您的回覆,我認爲這只是一個JavaScript問題。你可以把它作爲一個jsfiddler頁面(http://jsfiddle.net/)嗎? –

+0

這裏是鏈接..你可以看到.. sceureDomailUrl是「安全/」..它是在global.js中定義的... http://jsfiddle.net/Gvafq/ – Ajijul

相關問題