我不是在寻找div更新。我正在寻找一个完整的页面"刷新"
所以我有一个标签:
<g:remoteField controller="person" action="updatePerson" id="${personInstance.id}" paramName="search" name="updatePerson" value="${personInstance?.favoriteBreed}" />
在我附加的方法中,我想执行更新域对象的操作,然后刷新整个页面。我已经尝试过在应用程序中渲染和重定向到简单操作,但没有调用任何操作。所以我认为使用remoteField标签是不可能的。
这是真的吗?
为什么通过AJAX重新实现页面的正常行为?为什么不在被调用控制器的末尾调用重定向到正确的操作?
假设您处于showPerson操作产生的视图中。在这个视图中,用一个简单的(不关心params属性,这只是一个例子)调用updatePerson:
<g:Link controller="person" action="updatePerson" id="${personInstance.id}" params="${name: 'search'}">click me</g:link>
并在控制器中执行类似的操作:
def updatePerson = {
// your own updating stuff
redirect(action: "show", id: person.id)
}
这不是更容易吗?:)
<g:remoteField />
有一个事件onSuccess
,可以用来执行您想要的操作。您可以在此处查看更多选项。
尝试(未测试):
<g:remoteField controller="person" action="updatePerson"
id="${personInstance.id}" paramName="search" name="updatePerson"
value="${personInstance?.favoriteBreed}" onSuccess="reloadPage()" />
您需要创建javascript函数:
function reloadPage() {
window.location.reload();
}