我有一个控制器将Song对象列表传递给视图。
此列表作为URL列表输出,其URL中包含对象的ID属性:
e.g。
http: //.../song/23
来自:
<a href="song/${song.id}">
<c:out value="${song.songName}"/>
</a>
进一步详情:
问题是将正确的歌曲对象转发给负责生成...song/23
网址的歌曲控制器的正确方法是什么?
示例:循环播放4个歌曲对象应生成包含4个链接的视图。
链接1 LINK2 链接3 LINK4
每个链接对应一个歌曲对象,点击每个链接应该转发到一个唯一的URL。例如:如果song1的id为42,则单击Link1应转发到http://../song/42并将与Link1对应的歌曲对象传递给歌曲控制器。
答案 0 :(得分:0)
您可以在表单中添加一些隐藏变量,以便在选择歌曲时填充数据并从javascript函数发送到Controller。
HTML:
<form method="POST" id="formId" action="">
<input type="hidden" name="selectedSongId" value=""/>
<input type="hidden" name="selectedSongName" value=""/>
<input type="hidden" name="selectedSongArtist" value=""/>
<c:forEach ...>
<a href="submitForm(${song.id}, ${song.songName},
${song.selectedSongArtist})">
<c:out value="${song.songName}"/>
</a>
</c:forEach>
</form>
使用Javascript:
submitForm = function(songId, songName, songArtist){
form = document.getElementById('formId');
form.selectedSongId = songId;
form.selectedSongName = songName;
form.selectedSongArtist = songArtist;
form.action="songs/"+songId+"/doSomething";
form.submit();
}
控制器:
@RequestMapping("songs/{songId}/doSomething")
public String handleSubmit (@PathVariable String songId,
@RequestParam("selectedSongName") String songName,
@RequestParam("selectedSongArtist") String songArtist) {
// do Something
}
这样做。
但是,您也可以在JSON对象中填充数据并发送到具有@ModelAttribute注释参数的Controller处理程序方法。谷歌,如果你有兴趣。