Grails分页参数带点的情况下的bug

Grails的分页是靠tag g:pagination来完成的,但是这里有点小bug。

如下场景:

前提首先是仿照springside3.x的起名查询法给grails加了个自动查询,这样95%的情况只需要简单给表单控件起名就ok了。

 

一个form表单,里面有分类category,如果写了

g:select, name="category.id", value="${params['category.id']}"

实际上你在controller里面获得提交的params的时候,是

category.id:1, category:[id:1] 也就是说会被拆开两个。

 

这导致了g:pagination

<g:paginate total="${total}" class="pagination-centered" params="${params}"/>

的params多了一个category的参数,同时下一页的时候查询失败。

 

解决方法是自己拷贝一个Pagination类,改一下。

在 def linkParams = [:] 之前hack一下:

        Map attrsMap = attrs.params
        Iterator _it = attrsMap.iterator()
        while (_it.hasNext()) {
            def entry = _it.next()
            if (entry.value instanceof Map) {
                _it.remove()
            }
        }

 

 

你可能感兴趣的:(grails)