0

我正在 Spring/Hibernate 中编写一个处理基本投票功能的 Web 应用程序。我想要一个指向 /vote/{gameId} 的链接,它将将该投票添加到该特定 ID 的数据库中。不过,我真的不知道如何做到这一点。这是我在控制器中尝试过的:

@RequestMapping(value="/vote/{gameId}", method = RequestMethod.POST)
public String addVote(@PathVariable("gameId")
Integer gameId) {

    Vote vote = new Vote();
    vote.setGameId(gameId);

    voteService.addVote(vote);
    return "redirect:/games/wanted.html";
}

这是链接在 jsp 中显示的位置:

<c:if test="${!empty games}">
    <table>
        <tr>
            <th>Game Title</th>
            <th>Votes</th>
            <th>&nbsp;</th>
        </tr>

        <c:forEach items="${games}" var="game">
            <tr>
                <td><c:out value="${game.title}"/></td>
                <td>Placeholder</td>
                <td><a href="vote/${game.id}">Vote!</a></td>
            </tr>
        </c:forEach>
    </table>
</c:if>

当我尝试这个时,我只是得到一个 404 错误。任何见解都会很棒。

4

1 回答 1

2

这是您使用纯 Javascript进行后调用的方式:

var url = "vote";
var params = "id=1";
http.open("POST", url, true);

//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");

http.onreadystatechange = function() {//Call a function when the state changes.
    if(http.readyState == 4 && http.status == 200) {
        alert(http.responseText);
    }
}
http.send(params);

您需要在点击链接时调用它。

另一方面,例如,如果您使用jQuery Javascript 库,则要容易得多:

对于您的特定情况,它将类似于:

$.post("vote", { id: "1" } );

或者完整的 jQuery 答案(记得用你标签的 id 替换 #linkid):

$(document).ready(function() {  //this runs on page load
  // Handler for .ready() called.

   $('#linkid').click(function(event) {  //this finds your <a> and sets the onclick, you can also search by css class by type of tag
     $.post("vote", { id: "1" } );
       return false; //this is important so that the link is not followed
    });

});
于 2012-07-12T01:38:57.197 回答