window.open()调用第一次没有命中控制器

时间:2013-01-15 01:17:59

标签: javascript spring spring-mvc controller

请帮我解决这个荒谬的问题。 我通过使用window.open()函数从我的js表单传递一个URL,它将触及一个控制器方法,并且还包含一些路径变量。 就是这样,

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发出的呼叫没有击中控制器,但下次控制器每次都被命中。

1 个答案:

答案 0 :(得分:0)

对于这个问题,最好的调查方法是:

1)在window.open()命令之前和之后放置alert('Before open ' + myUrl);alert('After open ' + myUrl);,以确保它已被执行。

2)你的控制器中的System.out.println("Controller hit. Pathvar 1 = " + pathVar1 + "; Pathvar 2 = " + pathVar2);以确保它真的被击中。

我的猜测是,不知何故,您的网址未能正确初始化,因此命令将无法运行。但无论什么原因,在你进行上述两项测试后都应该清楚。