我正在编写一个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链接:
不要犹豫,询问其他信息。
答案 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()或其他内容。这不是一个很好的选择,但就是我所知道的......