请帮我解决这个荒谬的问题。 我通过使用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发出的呼叫没有击中控制器,但下次控制器每次都被命中。
答案 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);
以确保它真的被击中。
我的猜测是,不知何故,您的网址未能正确初始化,因此命令将无法运行。但无论什么原因,在你进行上述两项测试后都应该清楚。