0

私の質問は、送信時にコントローラーview.gspでアクションを呼び出すフォームを含むページがあるということです。ここでやりたいことは、詳細がデータベースに正常に保存されたら、そのページ( )に戻るか、リモート呼び出しまたは送信を使用してそこにとどまることです。saveMyController.groovyview.gsp

それ、どうやったら出来るの?

また、主に、「あなたの詳細は正常に保存されました」または「詳細をもう一度入力してください」というテキストを追加したいと考えています。テンプレートを作成してからレンダリングすることはできますMyControllerか? どのように?

4

1 に答える 1

0

同じフォームとアクションを使用して、作成 (保存) と編集 (更新) の両方を行うつもりですか?

ある時点saveでのアクションは、保存が成功したかどうかに基づいて、redirectまたは特定のビューになります。render保存するかどうかに関係なく、常に同じビューをレンダリングする必要があるため、次のようにします。

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...住所がない場合はこれを表示したくないと思うので、そこに を含めました。

于 2012-07-17T23:25:45.313 に答える