0

请帮我解决这个荒谬的问题。我通过使用 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 的调用时,它没有击中控制器,但下次每次都击中控制器。

4

1 回答 1

0

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

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

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

我的猜测是,在第一次您的 URL 未正确初始化时,该命令将无法运行。但不管是什么原因,在您执行上述 2 个测试后应该清楚。

于 2013-01-15T04:16:54.190 回答