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() コマンドの前後に and を配置して、実行されたことを確認します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 に答える