如何在GRAILS中调用更新的同一页面上显示已保存的状态

时间:2012-01-27 16:23:27

标签: grails view render

Grails的新手,这可能是一个简单的问题。

我正在尝试将一些值保存到数据库中,因此我在GSP(info.gsp)中创建了一个包含两个文本字段和一个按钮的简单表单。当按下按钮(更新)时,它会调用控制器上的方法update()。保存更改。好到这里。

我想用保存的新值在同一个gsp(info.gsp)上显示“已保存”。 render将我带到了一个新页面。

请帮忙怎么做。

感谢 萨纳

2 个答案:

答案 0 :(得分:0)

在您的控制器中重定向之前,请添加以下内容:

flash.message = "I saved something"

然后在您的GSP中,请注意以下事项:

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

另请注意,如果您生成Grails脚手架代码,您将看到我刚刚向您展示的完全相同的内容。

答案 1 :(得分:0)

在保存对象的操作上,渲染要显示的值,例如

    def save() {
       println params
       def bookInstance = new Book(params)
       if (!bookInstance.save(flush: true)) {
          render "not saved"
       }
       flash.message = message(code: 'default.created.message', args: [message(code: 'book.label', default: 'Book'), bookInstance.id])
       render bookInstance.id // "saved!!!!"
}

并在您的视图中使用其ID更新占位符。在我的示例中,submitToRemote有一个更新属性来处理它。希望这段代码有帮助

<html>
<head>
    <title>Page Title</title>
    <meta name="layout" content="main"/>
    <r:require modules="jquery"/>
    <g:javascript library="application" /> 
    <modalbox:modalIncludes />
</head>
<body>
    <g:form name="myform" action='save'>
            book: <input name="name" type="text" />
            <g:submitToRemote action='save' update="updateMe" name="myname"/>
    </g:form>
    <div id="updateMe">
    </div>
</<body>