フォームに隠し変数をいくつか用意して、曲が選択されたときに変数にデータを入力し、javascript 関数からコントローラーに送信することができます。
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 注釈付き引数を持つコントローラー ハンドラー メソッドに送信することもできます。興味のある方はググってください。