首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring MVC:在给定URL的控制器之间传递对象

Spring MVC:在给定URL的控制器之间传递对象
EN

Stack Overflow用户
提问于 2013-07-11 12:46:46
回答 1查看 1.6K关注 0票数 0

我有一个控制器,它将Song对象的列表传递给一个视图。

此列表以URL列表的形式输出,URL中包含对象的ID属性:

例如:

http: //.../song/23通过以下方式获得:

代码语言:javascript
复制
<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的歌曲对象传递给歌曲控制器。

EN

回答 1

Stack Overflow用户

发布于 2013-07-11 15:13:03

你可以在你的表单中有一些隐藏的变量,当歌曲被选中并从javascript函数发送到Controller时,用数据填充它们。

HTML:

代码语言:javascript
复制
<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:

代码语言: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();
}

控制器:

代码语言:javascript
复制
@RequestMapping("songs/{songId}/doSomething")
public String handleSubmit (@PathVariable String songId,
                  @RequestParam("selectedSongName") String songName,
                  @RequestParam("selectedSongArtist") String songArtist) {

    // do Something
}

这个就行了。

但是,您也可以将数据填充到JSON对象中,并发送到带有@ModelAttribute注释参数的控制器处理程序方法。谷歌,如果你感兴趣的话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17585253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档