2016-08-08 6 views
0

私はチックタックのつま先を弾くボードを持つjspを持っています。そしてそれをクリックするたびに、クリックされたフィールドをSpringコントローラに送ります。それから私はコンピュータのための最良の動きを見つけ、私とコンピュータの動きのあるボードを表示します。問題は、最初の移動後、別のフィールドをクリックしても何も行われないことです。スクリプトは一度だけ動作します。 URL内のパラメータを変更すると、手動で移動の位置が変更されますが、別の位置に変更されることはありません。フォームをコントローラに一度送信すると、動作しません。

ボード( "game.jsp")とフォームのコード:

%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> 

<html> 
<head> 
    <title>Game</title> 
</head> 
<body> 
<script> 
    function redirect(x, y) { 
     window.location = "http://localhost:8080/taskNine/move?x=" + x + "&y=" + y; 
    } 
</script> 
    <FORM NAME="tic" method="post" accept-charset=utf-8> 
    <INPUT TYPE="button" NAME="sqr1" class="tictac" value="${board[0][0]}" onClick="if(document.tic.sqr1.value == '') {document.tic.sqr1.value = 'X';redirect(0, 0); }"> 
    <INPUT TYPE="button" NAME="sqr2" class="tictac" value="${board[0][1]}" onClick="if(document.tic.sqr2.value == '') {document.tic.sqr2.value = 'X';redirect(0, 1); }"> 
    <INPUT TYPE="button" NAME="sqr3" class="tictac" value="${board[0][2]}" onClick="if(document.tic.sqr3.value == '') {document.tic.sqr3.value = 'X';redirect(0, 2); }"> <br /> 
    <INPUT TYPE="button" NAME="sqr4" class="tictac" value="${board[1][0]}" onClick="if(document.tic.sqr4.value == '') {document.tic.sqr4.value = 'X';redirect(1, 0); }"> 
    <INPUT TYPE="button" NAME="sqr5" class="tictac" value="${board[1][1]}" onClick="if(document.tic.sqr5.value == '') {document.tic.sqr5.value = 'X';redirect(1, 1); }"> 
    <INPUT TYPE="button" NAME="sqr6" class="tictac" value="${board[1][2]}" onClick="if(document.tic.sqr6.value == '') {document.tic.sqr6.value = 'X';redirect(1, 2); }"> <br /> 
    <INPUT TYPE="button" NAME="sqr7" class="tictac" value="${board[2][0]}" onClick="if(document.tic.sqr7.value == '') {document.tic.sqr7.value = 'X';redirect(2, 0); }"> 
    <INPUT TYPE="button" NAME="sqr8" class="tictac" value="${board[2][1]}" onClick="if(document.tic.sqr8.value == '') {document.tic.sqr8.value = 'X';redirect(2, 1); }"> 
    <INPUT TYPE="button" NAME="sqr9" class="tictac" value="${board[2][2]}" onClick="if(document.tic.sqr9.value == '') {document.tic.sqr9.value = 'X';redirect(2, 2); }"> <br /> 
    </form> 
</body> 
</html> 

そして、ここでは、コントローラの抜粋です:

@RequestMapping(value = "/move", method = RequestMethod.GET) 
public String fieldMove(@RequestParam("x") int x, @RequestParam("y") int y, ModelMap model) { 

    gameService.move(x, y, model); 
    return "game"; 
} 
+0

なぜ 'window.location'が必要ですか? –

+0

コントローラにデータ(パラメータ)を送信して処理し、コンピュータの移動を返します。 – Tiberio

+0

私はそれにAjaxを使う必要があると思います! –

答えて

0

RequestParamの名前と一致する必要があります入力の名前:

@RequestMapping(value = "/move", method = RequestMethod.GET) 
public String fieldMove(@RequestParam("sqr1") int sqr1, @RequestParam("sqr2") int sqr1, ..., ModelMap model) { 

// Do something 
return "game"; 

}

+0

私はそれをチェックしますが、関数のリダイレクトは一度しか機能しないのはなぜですか?それはそのように簡単だろう。 – Tiberio

関連する問題