Grails 如何从控制器将模板附加到specefic视图
我的问题是,我有一个页面,比如说Grails 如何从控制器将模板附加到specefic视图,grails,Grails,我的问题是,我有一个页面,比如说view.gsp,其中包含一个表单,在提交时在我的控制器sayMyController.groovy中调用动作save。现在我想做的是,当详细信息成功保存到数据库中后,我想返回到该页面(view.gsp),或者使用远程调用或提交留在那里 我该怎么做 此外,主要是,我想附加一个文本,说明“您的详细信息已成功保存”或失败时“请再次输入详细信息”。我可以创建一个模板,然后从MyController中呈现它吗?怎么做?那么您要使用相同的表单和操作创建(保存)和编辑(更新)
view.gsp
,其中包含一个表单,在提交时在我的控制器sayMyController.groovy
中调用动作save
。现在我想做的是,当详细信息成功保存到数据库中后,我想返回到该页面(view.gsp
),或者使用远程调用或提交留在那里
我该怎么做
此外,主要是,我想附加一个文本,说明“您的详细信息已成功保存”或失败时“请再次输入详细信息”。我可以创建一个模板,然后从MyController中呈现它吗?怎么做?那么您要使用相同的表单和操作创建(保存)和编辑(更新)吗 根据保存是否成功,您的
save
操作在某个时间点将重定向
或呈现
特定视图。由于无论是否保存,您始终希望渲染相同的视图,因此我将执行以下操作:
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])
}
然后在您的视图.gsp
中,您可以显示您在flash.message中设置的内容,如下所示:
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
我加入了我怀疑在你接受一些已经给予你的帮助之前,你会得到更多的帮助。该死,对不起,我是这个网站的新手,我真的不知道怎么做……别担心,这很容易解决;)实际上,我问我是否可以使用模板的原因是因为它不仅仅是一条普通的文本消息。消息应该是这样的——“property(这里是property的id):(这里是property的地址)已经被添加。这就是为什么我创建了一个模板,我想知道是否可以从我的视图中的控制器呈现这个模板。gsp-我的模板看起来像这样-property${propertyInstance?.id}:${propertyInstance?.address}已成功添加。我想您可以创建一个小模板,并将propertyInstance传递给它。在这种情况下,您可以将模板嵌入view.gsp中,并将propertyInstance模型传递给它。我将在答案中添加一个小更新。但这似乎过于复杂-您向用户显示的仍然是一条纯文本消息。除非您还没有声明其他内容,否则我仍会按上述方式执行-只需让您刷新。message=“Property${propertyInstance?.id}:${propertyInstance?.address}已成功添加“感谢您的编辑,我将解释为什么我选择使用模板而不是flash消息。这是因为我希望每次用户输入新的详细信息时,在旧消息的正下方的视图中追加/显示消息。因此,如果他输入了5次详细信息,那么在查看页面上应该有5条消息显示is属性的详细信息。并且(街道)必须是一个链接才能将他带到列表操作()。我知道这很复杂(
<g:if test="${propertyInstance.address}">
<g:render template="addressMessage" model="[propertyInstance: propertyInstance]" />
</g:if>
<g:else>
Please enter details again.
</g:else>