2012-07-17 64 views
0

我的问题是,我有一个页面说view.gsp并包含一个窗体,在我的控制器中调用动作saveMyController.groovy在提交。现在我想要做的是,当细节已经成功保存在数据库中时,我想回到那个页面(view.gsp),或者宁可留在那里,使用远程调用或提交。如何使模板附加到从控制器specefic视图

我该怎么做?

另外,主要是我想附加一段文字,说明'您的详细信息已经保存成功'或'请在失败时再次输入详细信息'。我可以这样做,创建一个模板,然后从MyController渲染它?怎么样?

+0

我怀疑你会得到更多的帮助,直到你接受你已经给予的一些帮助。 – OnResolve 2012-07-17 22:47:12

+0

该死的,对不起,我是这个网站的新手,真的不知道事情是如何完成的。 – niharika 2012-07-17 22:52:29

+0

别担心,这是一个简单的修复;) – OnResolve 2012-07-17 22:53:38

回答

0

因此,您要使用相同的表单和操作来创建(保存)和编辑(更新)?

您的save根据保存是否成功,某个点的操作可以是redirectrender特定的视图。因为你总是希望呈现了同样的观点,无论它是否保存或不我这样做:

def save = { 
    def propertyInstance 
    //you need to do this since you are both saving and updating in the same action 
    if(params.id) { 
     propertyInstance = Property.get(params.id) 
     propertyInstance.properties = params 
    } else { 
     propertyInstance = new Property(params) 
    } 

    if (propertyInstance.save(flush: true)) { 
     flash.message="Property ${propertyInstance?.id} : ${propertyInstance?.address} has been added successfully" 
    } 
    else { 
     flash.message = "Please enter details again" 
    } 
    render(view: "view", model: [propertyInstance: propertyInstance]) 
} 

,然后在view.gsp你能证明你在flash.message这样设置:

<g:if test="${flash.message}"> 
    <div class="message">${flash.message}</div> 
</g:if> 

编辑

如果你想用一个模板(例如称为_addressMessage.gsp),以显示与一些格式化的消息(比如如果地址的部分在单独的行),你可以做这样的事情在你的view.gsp无论你想要的消息显示:

<g:if test="${propertyInstance.address}"> 
    <g:render template="addressMessage" model="[propertyInstance: propertyInstance]" /> 
</g:if> 
<g:else> 
    Please enter details again. 
</g:else> 

我包括在那里<g:if...,因为我认为你不想显示这一点,如果没有地址。

+0

其实我之所以问我是否可以使用模板是因为它不仅仅是一个纯文本消息。这个消息需要像这样 - “属性(这里属性的id):(这里属性的地址)已被添加。这就是为什么我创建了一个模板,我想知道如果我可以从我的控制器渲染此模板在我的view.gsp-我的模板看起来像这样 - Property $ {propertyInstance?.id}:$ {propertyInstance?.address}已成功添加 – niharika 2012-07-17 23:33:53

+0

嗯,我猜你可以创建一个小模板并将其传递给propertyInstance。你可以将模板嵌入到view.gsp中,并将其传递给propertyInstance模型,我会在答案中添加一个小小的更新,但是这看起来过于复杂 - 你展示的用户仍然只是一个纯文本消息。还有别的,你还没有说,但我仍然会这样做 - 只是让你flash.message =“财产$ {propertyInstance?.id}:$ {propertyInstance?.address}已成功添加” – Kelly 2012-07-17 23:58:07

+0

谢谢为了编辑,我会解释为什么我'选择去模板而不是闪光消息。这是因为我希望每次用户输入新的详细信息时,都要在视图中附加/显示消息,正好位于旧消息的下面。因此,如果他已输入5次详细信息,则视图页面上应显示5条消息,显示属性的详细信息。并且(街道)必须成为将他带到列表动作()的链接。我明白这很复杂。 :( – niharika 2012-07-18 06:51:49

相关问题