grails g:link 传递参数

Posted

技术标签:

【中文标题】grails g:link 传递参数【英文标题】:grails g:link pass params 【发布时间】:2011-08-30 09:52:13 【问题描述】:

我有这样的事情:

<g:each in="$temp">

  <li>Date: $it.dateParticipated, <br>Role: $it.role, <br>Acceptence: $it.accepted, <br>
  <g:link controller="conference" action="participated" id="$it.conference.id">
     Conference: </g:link>$it.conference,<br>
Role: $it.role, <br>Status: $it.status</li><br>

  <br>
</g:each>

我想要做的是,当我点击“会议”时,会加载带有“参与”方法的控制器“会议”​​,并传递参数“it.conference”。我如何在 g:link 标签中传递这个参数?

我需要这个,因为当我点击“会议”一词时,其他页面会加载会议详细信息并传递 id。

【问题讨论】:

【参考方案1】:

使用 params 属性传入参数映射:

<g:link action="/conference/participated" id="$it.conference.id" params="[foo: 'bar', bar: 'foo']">My Link!</g:link>

更多示例请参见the documentation。

【讨论】:

我读过。但我不明白如何通过它传递“it.conference”。 会议是成熟的对象还是原始的? 从文档中看不是很明显,但是您删除引号以引用上一个操作中设置的变量 @barrymac 谢谢你,永远不会猜到。它可以工作,但它非常丑陋,IDEA 甚至将其报告为语法错误,所以如果有人有更好的想法... ;) 未来读者的示例:params="[foo: "$it.bar"]" 这种方式可能不那么难看... :) params="$[foo:it.bar]"【参考方案2】:

你需要用 $ 包装你的整个参数,而不是包装你想要单独传递的每个变量。

<g:each in="$temp">

  <li>Date: $it.dateParticipated, <br>Role: $it.role, <br>Acceptence: $it.accepted, <br>
  <g:link controller="conference" action="participated" params="$[id: it.conference.id, role: it.role, status: it.status]">
     Conference: </g:link>

  <br>
</g:each>

【讨论】:

【参考方案3】:
params="[customerId: customer.id]"

【讨论】:

heelo bro 我使用了相同的注释,但我在控制器 ***.com/questions/49855362/… 中得到空值

以上是关于grails g:link 传递参数的主要内容,如果未能解决你的问题,请参考以下文章

Grails 控制器传递参数

如何在 Grails 控制器之间传递错误消息?

带有片段参数的 Grails render()

我可以在返回消息条目字符串和参数之前获取 Grails 消息字符串吗?

GRAILS:findALL() vs FindBy---(params.id)

在开发中更改 grails 3.0.9 中的默认服务器端口