Grails 删除项目后如何保留查询结果?

Grails 删除项目后如何保留查询结果?,grails,groovy,gsp,Grails,Groovy,Gsp,在我的Grails应用程序中,我有多个页面,在一个表中列出一组数据对象。在这些页面中,我提供了一个搜索功能,当执行该功能时,将调整表以仅显示与查询匹配的数据对象。但是,如果用户决定删除其中一个数据对象,应用程序将把它们带回显示所有内容的默认表。我希望查询结果在执行删除后保持不变 在这篇文章中,我将以我的“技能评估”页面为例 下面是域类中的相关代码 斯基列瓦尔 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])
}