开发一个通过服务器提供的webapp。它的索引提供了一些商店优惠,所有这些交易都是ann 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”的交易。我有一个“一般”交易详情页面。我希望该页面始终加载,并根据用户点击的交易以dinamically方式实现其详细信息。我怎么能这样做?
我不知道我的解释是否清楚,如果我没有请问。
谢谢!
答案 0 :(得分:1)
这两个链接都将由openPromo
中的PromotionController
操作处理,并将作为id
传递给促销的promoid
。
然后,您可以加载相应的促销以及您希望用户查看的任何其他相关商品,并将其提供给视图。例如:
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
。
答案 1 :(得分:0)
您可以将该常规信息添加到模板中,然后从Controller中将其呈现为
// 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,就像第一个调用动作的createLink一样,它将渲染该模板。
希望它有所帮助;)祝你好运!
答案 2 :(得分:0)
在问我的同事后,我这样做了:
def openPromo() {
Promotion promo = Promotion.get(params.promoid)
[promo:promo]
}
几乎你所说的大卫,但没有渲染,如果我将openPromo
命名为我的gsp。
谢谢!