2013-07-11 93 views
0

我有一個控制器將一個Song對象列表傳遞給一個視圖。Spring MVC:控制器之間傳遞對象給定URL

該列表被輸出作爲與在URL中的對象的ID屬性的URL的列表:

例如

<a href="song/${song.id}"> 

<c:out value="${song.songName}"/> 

</a> 

更多細節:

http: //.../song/23由獲得

的問題是,什麼是轉發正確的歌曲對象的歌曲控制器,它負責在生成...song/23 URL的正確方法?

例如:循環播放4首歌曲對象應產生一個包含4個鏈接的視圖。

鏈接1 鏈路2 鏈接3 鏈路4

每個鏈路對應於一首歌曲的對象,點擊每條鏈路上應該轉發到一個獨特的URL。例如:如果song1的id是42,那麼單擊Link1應轉發到http://../song/42並將對應於Link1的歌曲對象傳遞給歌曲控制器。

回答

0

我希望我理解你的問題不夠好,但在Spring MVC(基於註解的),你可以做這樣的事情:

@RequestMapping(value="/song/{songId}/", method=RequestMethod.GET) 
public String showSong(@PathVariable int songId) { 
    // Do something 
} 

現在你可以檢索由ID你的歌的對象(我想你的服務有這樣的功能),然後你有你的歌曲對象。

+0

不知道這是否是正確的答案。我會在我的問題中添加更多細節。 – edst

+0

你到底想要什麼?我的代碼顯示瞭如何通過獲取ID(23)從「song/23」URL中檢索歌曲對象,然後可以通過該ID查找歌曲對象。 – g00glen00b

+0

當我只在第一個控制器中存在時,我將如何查找歌曲對象? – edst

0

當您選擇歌曲並從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註釋參數的Controller處理程序方法。谷歌,如果你有興趣。

相關問題