Spring MVC获得onclick输入星级的价值

时间:2015-02-06 09:31:43

标签: java javascript html spring controller

我正在编写一个java spring mvc web应用程序,在客户端我正在使用bootstrap和一个星级评级插件,以显示我正在向用户显示的歌曲列表。

我正在做的是传递我在会话中生成的播放列表,并在jsp迭代此列表中创建一个正确拟合的表。在歌曲名称\标题的一侧,我想显示一个星级评分系统;我做到了,但它被设置为输入数字。我想要做的是,在星号点击时,重定向到另一个页面,在控制器中检索速率,制作一些逻辑,然后返回没有该歌曲的播放列表页面。

我遇到了一些困难,因为在控制器上,要了解哪首歌被评级,我显然必须将歌曲的id作为输入参数,所以输入的名称就像“input2838” ,但是当我必须请求RequestParameter值的参数时,在控制器端,我需要准确指定我想要的参数的名称,所以我认为这不是正确的事情。

我问你关于如何做这类事情的建议,最重要的是,当我点击那个输入时,如何重定向到另一个页面,传递参数的值......

我向您展示了jsp代码片段,其中显示了歌曲表。

<script>$("#input-id").rating();</script> <-- initialize the stars script

<c:choose>    <-- when the playlist is not empty show it
  <c:when test="${not empty playlist}">
   <div class="container col-lg-10 col-lg-offset-1" >
    <table class="table table-striped table-bordered table-hover">

        <thead>
            <tr>
                <th>#</th>
                <th>Cover</th>
                <th>Artista</th>
                <th>Titolo</th>
                <th>Rate</th>
            </tr>
        </thead>

        <tbody>

<c:forEach items="${playlist}" var="canzone" varStatus="count">
<tr style="font-weight: normal">
  <td style="font-weight: normal">${count.index +1}</td>
  <td style="font-weight: normal"><img src="${canzone.albumImageUrl}" /></td>
  <td style="font-weight: normal">${canzone.artistName}</td>
  <td class="col-lg-4" style="font-weight: normal">${canzone.title}</td>
<td class="col-lg-4" style="font-weight: normal"><div><input id="input-id" type="number" class="rating" min=0 max=5 step=1 data-size="xs" data-rtl="false"></div></td>
       <tr>
    </c:forEach>
            </tbody>

    </table>
    </div>
  </c:when>
  <c:otherwise>

现在我为了完整性发布了你的星级评分js作为pastebin链接:

Pastebin here

不要犹豫,询问其他信息。

1 个答案:

答案 0 :(得分:0)

您的问题是,如果您获得表格中指定为id="sondId"name="sondId"的所有歌曲ID,并使用request.getParameter("songId"),则不会选择正确的值行将包含相同的ID和名称。

所以你需要做的是在<c:forEach>输入a,如下面

<c:forEach items="${playlist}" var="canzone" varStatus="count">
    <form action="yourActionPath" method="post">
        <tr style="font-weight: normal">
            <input type="hidden" id="songId" name="songId" value="${canzone.id}"/>
            <td style="font-weight: normal">${count.index +1}</td>
            <td style="font-weight: normal"><img src="${canzone.albumImageUrl}" /></td>
            <td style="font-weight: normal">${canzone.artistName}</td>
            <td class="col-lg-4" style="font-weight: normal">${canzone.title}</td>
            <td class="col-lg-4" style="font-weight: normal"><div><input id="input-id" type="number" class="rating" min=0 max=5 step=1 data-size="xs" data-rtl="false"></div></td>
        </tr>
    </form>
</c:forEach>

您必须在指定星标后决定如何提交表单,例如onchange()或其他内容。这不是一个很好的选择,但就是我所知道的......