grails g:link pass params

rob*_*ert 18 grails hyperlink params

我有这样的事情:

<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>
Run Code Online (Sandbox Code Playgroud)

我想要做的是,当我点击"会议"时,控制器"会议"​​与方法"参加"被载入,并且PARAMS"it.conference"传递.我怎样才能在g:link标签中传递这个参数?

我需要这个,因为当我点击"会议"字样时,其他页面会加载会议详细信息并传递ID.

Kal*_*see 30

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

<g:link action="/conference/participated" id="${it.conference.id}" params="[foo: 'bar', bar: 'foo']">My Link!</g:link>
Run Code Online (Sandbox Code Playgroud)

有关更多示例,请参阅文档.

  • 这种方式可能有点不那么丑...... :)`params ="$ {[foo:it.bar]}"` (8认同)
  • @barrymac感谢那一个,永远不会猜到.它有效,但它非常难看,IDEA甚至将其报告为语法错误,所以如果有人有更好的想法...;)未来读者的例子:params ="[foo:"$ {it.bar}"]" (7认同)
  • 从文档中可以看出这一点并不明显,但是您删除引号以引用上一个操作中的变量集 (2认同)

Ary*_*ein 5

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

<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>
Run Code Online (Sandbox Code Playgroud)