【问题标题】:grails g:link pass paramsgrails g:link 传递参数
【发布时间】: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。

【问题讨论】:

    标签: grails hyperlink params


    【解决方案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]"
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      • 1970-01-01
      • 2019-03-24
      • 1970-01-01
      相关资源
      最近更新 更多