我有一个控制器,它将Song对象的列表传递给一个视图。
此列表以URL列表的形式输出,URL中包含对象的ID属性:
例如:
http: //.../song/23通过以下方式获得:
<a href="song/${song.id}">
<c:out value="${song.songName}"/>
</a>更多详细信息:
问题是什么才是将正确的歌曲对象转发到负责生成...song/23 URL的歌曲控制器的正确方式?
示例:循环遍历4个歌曲对象应该会产生一个包含4个链接的视图。
Link1 Link2 Link3 Link4
每个链接对应于一个歌曲对象,单击每个链接应转发到一个唯一的URL。例如:如果歌曲1的id是42,则点击歌曲应该转发到Link1 /42,并将对应于Link1的歌曲对象传递给歌曲控制器。
发布于 2013-07-11 15:13:03
你可以在你的表单中有一些隐藏的变量,当歌曲被选中并从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注释参数的控制器处理程序方法。谷歌,如果你感兴趣的话。
https://stackoverflow.com/questions/17585253
复制相似问题