我遇到了使用。链接到类实体的UI问题
<td><g:link controller="publishedShr" action="show"
id="${videoShrInstance.publId.id}">
${fieldValue(bean: videoShrInstance, field: "publId")}</g:link></td>
这里是结果网址:
http://localhost:9000/HomeVu1/publishedShr/show/%5B35%5D
应采用以下形式:
http://localhost:9000/HomeVu1/publishedShr/show/35
在同一网页上,我有一个与工作的子实体类似的链接:
<td><g:link controller = "videoShr" action="show" id="${publishedShrInstance.videoId.id}">
${fieldValue(bean: publishedShrInstance, field: "videoId")}</g:link></td>
我正在使用
我已经清理了这个链接最初工作的项目 - 我可以将它转换为Long
-Mike
答案 0 :(得分:0)
您尝试创建链接的方式是正确的,除了您尝试输出ID的方式。当您尝试输出videoShrInstance.publId.id
的值时,它相当于写videoShrInstance*.publId*.id
。它被隐式转换为在Groovy中使用spread运算符(星号*运算符)
由于它隐式使用spread运算符并包含在GString中,因此Groovy输出包含&#34; []&#34;的列表的toString()版本。括号。然后它由g:link
标记进行网址编码,这就是为什么您的网址如此搞砸了。
您可以将链接更改为以下格式,以正确形成网址:
<td>
<g:link controller="publishedShr" action="show"
id="${videoShrInstance.publId?.getAt(0)?.id}">
${fieldValue(bean: videoShrInstance, field: "publId")}</g:link>
</td>
这将输出列表中第一个hasMany实例的id,并且也是null安全的。
查看此脚本以更多地了解此概念:http://groovyconsole.appspot.com/script/5768755258851328