我的问题是,我有一个页面说并包含一个表单,该表单在我的控制器view.gsp
中调用一个动作说在提交时。现在我想做的是,当详细信息已成功保存在数据库中时,我想回到那个页面()或者更确切地说是呆在那里,使用远程调用或提交。save
MyController.groovy
view.gsp
我怎么做?
另外,主要是,我想在失败时附加一条文字,“您的详细信息已成功保存”或“请再次输入详细信息”。我可以这样做创建一个模板,然后从MyController
? 如何?
我的问题是,我有一个页面说并包含一个表单,该表单在我的控制器view.gsp
中调用一个动作说在提交时。现在我想做的是,当详细信息已成功保存在数据库中时,我想回到那个页面()或者更确切地说是呆在那里,使用远程调用或提交。save
MyController.groovy
view.gsp
我怎么做?
另外,主要是,我想在失败时附加一条文字,“您的详细信息已成功保存”或“请再次输入详细信息”。我可以这样做创建一个模板,然后从MyController
? 如何?
所以你要使用相同的表单和操作来创建(保存)和编辑(更新)?
根据保存是否成功,您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...
,因为我认为如果没有地址,您不想显示此内容。