Window.open()调用第一次没有击中控制器

window.open() call not hitting controller first time

本文关键字:控制器 第一次 open 调用 Window      更新时间:2023-09-26

请帮我解决这个荒谬的问题。我通过使用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)将alert('Before open ' + myUrl);alert('After open ' + myUrl);放在window.open()命令的前后,以确保它被执行。

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

我的猜测是,不知怎的,第一次你的URL没有正确初始化,所以命令不会运行。但无论原因是什么,在你执行了上述两个测试之后,它应该是清楚的。