2012-07-24 61 views
0

我正在开发一个web应用程序,通过服务器提供。它的索引提供了一些商店交易,具有所有这些交易的身份。在.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> 

这意味着,当我点击其中一个链接,它会打开一个URL是这样的:

app/promotion/openPromo/3 

如果点击了ID“3”的交易。我有一个“一般”交易细节页面。我希望该页面始终可以加载,并根据用户点击的交易来完成它的详细信息。我怎样才能做到这一点?

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

谢谢!

回答

1

这两个链接将由PromotionController中的openPromo动作处理,并将通过promoid的促销id

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

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中使用模型数据。

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

你会很容易做到这一点,你可以添加一个建立连结,如第一批蒙山呼吁行动谁都会使该模板。

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

0

我就是这么做的,问我的同事后:

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

几乎你说的大卫,但没有渲染,如果我的名字openPromo我的普惠制。

谢谢!

+0

太棒了!在'gsp'与控制器名称相同的情况下,'[promo:promo]'是'render(view:'openPromo',model:[promo:promo])'的简称。 – 2012-07-24 10:49:14

相关问题