0

我正在开发一个通过服务器提供的 webapp。它的索引显示了一些商店交易,其中包含所有这些交易和 ID。在 .gsp 中,我有以下代码:

<div id="content">
<g:each in='${promos}' var='promo'>
<div id="up_box"></div>
<div class="deal_container">
    <div class="images_container"><img src="${createLink(action:'showImage',controller:'image',id:promo.fotoPrincipal.id)}" width="120" height="105" />

    </div>

    <g:link controller='promotion' action='openPromo' params="[promoid:promo.id]">

   <div class="oferta">${promo.name}</div>
   </g:link>
    <g:link controller='promotion' action='openPromo' params="[promoid:promo.id]">
    <div class="flecha">
     </div>
    </g:link>


</div>

这意味着,当我单击其中一个链接时,它将打开一个如下所示的网址:

app/promotion/openPromo/3

如果单击了 ID 为“3”的交易。我有一个“一般”交易详情页面。我希望该页面始终加载,并根据用户单击的交易动态地完成其详细信息。我怎样才能做到这一点?

我不知道我的解释是否清楚,如果我还没有,请询​​问。

谢谢!

4

3 回答 3

1

这两个链接都将由 中的openPromo操作处理,并将作为促销的PromotionController传递。idpromoid

然后,您可以加载适当的促销以及您希望用户查看的任何其他相关优惠,并将这些优惠提供给视图。例如:

class PromotionController {

  def openPromo() {
    Promo promo = Promo.get(params.promoid)

    // Load any other relevant data or offers

   render (view:'openPromo', model:[promo:promo, <any other model data here>]
  }
}

然后,您可以在gsp.

于 2012-07-24T07:22:54.543 回答
0

您可以将一般信息添加到模板中,然后像这样从控制器渲染它

// render a template to the response for the specified model
def theShining = new Book(title: 'The Shining', author: 'Stephen King')
render(template: "book", model: [book: theShining])

您在 Grails 文档的此链接中获得了有关渲染的更多信息。

http://grails.org/doc/latest/ref/Controllers/render.html

这很容易做到,您可以像第一个那样添加一个 createLink 调用将呈现该模板的操作。

希望它有所帮助;)祝你好运!

于 2012-07-24T07:14:17.497 回答
0

在问了我的同事之后,我这样做了:

def openPromo() {
    Promotion promo = Promotion.get(params.promoid)
    [promo:promo]
}

几乎你所说的大卫,但没有渲染,如果我命名openPromo我的 gsp。

谢谢!

于 2012-07-24T10:37:48.923 回答