Grails 删除项目后如何保留查询结果?
在我的Grails应用程序中,我有多个页面,在一个表中列出一组数据对象。在这些页面中,我提供了一个搜索功能,当执行该功能时,将调整表以仅显示与查询匹配的数据对象。但是,如果用户决定删除其中一个数据对象,应用程序将把它们带回显示所有内容的默认表。我希望查询结果在执行删除后保持不变 在这篇文章中,我将以我的“技能评估”页面为例 下面是域类中的相关代码 斯基列瓦尔 gsp视图文件的相关部分 普惠制Grails 删除项目后如何保留查询结果?,grails,groovy,gsp,Grails,Groovy,Gsp,在我的Grails应用程序中,我有多个页面,在一个表中列出一组数据对象。在这些页面中,我提供了一个搜索功能,当执行该功能时,将调整表以仅显示与查询匹配的数据对象。但是,如果用户决定删除其中一个数据对象,应用程序将把它们带回显示所有内容的默认表。我希望查询结果在执行删除后保持不变 在这篇文章中,我将以我的“技能评估”页面为例 下面是域类中的相关代码 斯基列瓦尔 gsp视图文件的相关部分 普惠制 如何使视图在删除一个查询项后保留查询结果?当您将重定向到列表操作时,您可以提供参数--只需捕获参数(如
如何使视图在删除一个查询项后保留查询结果?当您将
重定向到列表
操作时,您可以提供参数--只需捕获参数(如果有)在删除
操作中,并在控制器操作结束时在重定向调用中将其传递到列表
(更新:忘记actionSubmit不接受params作为属性,所以从和拼凑了这个解决方案)
例如:
// View (list.gsp)
<g:actionSubmit action="deleteWithParams" value="Delete" ... />
// Controller
def list() {
def deleteWithParams = { forward(action:'delete', params:[search: params?.search]) }
render...
}
def delete(Long id) {
// Deleting the skillEval ...
redirect(action: "list", params: [search: params?.search])
}
//视图(list.gsp)
//控制器
def列表(){
def deleteWithParams={forward(操作:'delete',params:[search:params?.search]))
提供。。。
}
def delete(长id){
//正在删除skillEval。。。
重定向(操作:“列表”,参数:[搜索:参数?.search])
}
<g:form>
<div class="search">
<label for="searchField">Search:</label> <input type="text"
id="searchField" name="search" value="${params.search}" /> <input
type="submit" value="Search" />
</div>
<br>
<table id="mainTable">
<thead>
<tr>
<th>Name</th>
<th>Version</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<g:each var="eval" in="${skillEvalList}">
<tr>
<td>
<strong>
${eval.name}
</strong>
</td>
<td>
${eval.formVersion}
</td>
<td>
<g:actionSubmit value="Delete" controller="skillEval" action="delete" onclick="setId(${eval.id});return confirm('Are you sure?');" class="delete" />
</td>
</tr>
</g:each>
</tbody>
</table>
<g:if test="${(skillEvalCount/maxCount) > 1}">
<div class="pagination">
<g:paginate action="list" total="${skillEvalCount}" />
</div>
</g:if>
<input id="evalId" type="hidden" name="id" value="" />
</g:form>
</div>
<r:script>
function setId(id)
{
$('#evalId').val(id);
}
</r:script>
def delete(Long id) {
def skillEval = SkillEval.get(id)
if (skillEval) {
def allInstances = SkillEvalI.findAllByForm(skillEval)
allInstances.each { evalInstance ->
evalInstance.lines.clear()
if(!evalInstance.delete()) {
println "Failed to delete skill eval instance"
}
else {
println "Instance successfully deleted."
}
}
try {
skillEval.delete(flush: true)
}
catch (DataIntegrityViolationException e) {
}
}
redirect(action: "list")
}
// View (list.gsp)
<g:actionSubmit action="deleteWithParams" value="Delete" ... />
// Controller
def list() {
def deleteWithParams = { forward(action:'delete', params:[search: params?.search]) }
render...
}
def delete(Long id) {
// Deleting the skillEval ...
redirect(action: "list", params: [search: params?.search])
}