grails将贴图分页为字符串

grails将贴图分页为字符串,grails,parameters,pagination,Grails,Parameters,Pagination,我试图在我的grails应用程序中创建一个搜索操作,该操作接受许多条件,并显示一个类似于符合条件的实例的默认索引操作的表 对于具有多个结果的搜索条件,我希望使用paginate标记: <g:paginate total="${alarmInstanceCount ?: 0}" params="${[searchParams:searchParams]}"/> 我的searchParams已转换为字符串 这是我的意思的一个例子 当我第一次打开搜索页面时,控制器报告参数如下: [act

我试图在我的grails应用程序中创建一个搜索操作,该操作接受许多条件,并显示一个类似于符合条件的实例的默认索引操作的表

对于具有多个结果的搜索条件,我希望使用paginate标记:

<g:paginate total="${alarmInstanceCount ?: 0}" params="${[searchParams:searchParams]}"/>
我的searchParams已转换为字符串

这是我的意思的一个例子

当我第一次打开搜索页面时,控制器报告参数如下:

[action:index, format:null, controller:alarm, max:10]
null
class org.codehaus.groovy.runtime.NullObject
[searchParams.channelName:SWR, searchParams:[channelName:SWR], _action_index:List, _method:PUT, action:index, format:null, controller:alarm, max:10]
[channelName:SWR]
class org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap
[max:10, searchParams:[channelName:SWR], offset:10, action:index, format:null, controller:alarm]
[channelName:SWR]
class java.lang.String
因此,由于params映射不包含searchParams的条目,因此它显示为null并具有NullObject类。我的代码优雅地处理了这个问题

当我在channelName字段中输入一些文本时,控制器会报告以下参数:

[action:index, format:null, controller:alarm, max:10]
null
class org.codehaus.groovy.runtime.NullObject
[searchParams.channelName:SWR, searchParams:[channelName:SWR], _action_index:List, _method:PUT, action:index, format:null, controller:alarm, max:10]
[channelName:SWR]
class org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap
[max:10, searchParams:[channelName:SWR], offset:10, action:index, format:null, controller:alarm]
[channelName:SWR]
class java.lang.String
因此,现在params映射有一个searchParams条目,该条目引用GrailsParameterMap。这是期望的行为,控制器正确解释了这一点

但是,如果单击分页栏中的第一个条目,控制器会报告如下参数:

[action:index, format:null, controller:alarm, max:10]
null
class org.codehaus.groovy.runtime.NullObject
[searchParams.channelName:SWR, searchParams:[channelName:SWR], _action_index:List, _method:PUT, action:index, format:null, controller:alarm, max:10]
[channelName:SWR]
class org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap
[max:10, searchParams:[channelName:SWR], offset:10, action:index, format:null, controller:alarm]
[channelName:SWR]
class java.lang.String
在第三种情况下,params映射有一个searchParams条目,它看起来正确,但实际上是一个字符串对象。这会导致我的代码内爆:

No such property: channelName for class: java.lang.String.
这是paginate标记的params属性的预期行为吗?如果是这样的话,对于我来说,实现我正在寻找的行为(即searchParams作为映射而不是字符串传递给我的控制器)的最干净的方法是什么

编辑:

以下是我的搜索表的相关gsp代码:

    <g:form url="[action:'index']" method="PUT" >
        <fieldset class="form">
            <div class="fieldcontain">
                <label for="channelName">
                    <g:message code="alarm.channelName.label" default="Channel Name" />

                </label>
                <g:textField name="searchParams.channelName" value="${searchParams?.channelName}"/>

            </div>
        </fieldset>
        <fieldset class="buttons">
            <g:actionSubmit class="list" action="index" value="${message(code: 'default.button.list.label', default: 'List', args: [entityName])}" />
        </fieldset>
    </g:form>

如何在searchParams中加载控制器?我已经在问题中添加了我的gsp和groovy代码。params看起来不错,我建议使用params=[searchParams:searchParams]进行测试,看看它是否有任何作用。。我提出建议的唯一原因是因为我正在使用remotePaginate并以这种方式将参数传递给它。。。。