我一直在更新我的一些控制器以使用命令对象,并开始制作 PaginateCommand 以供其他命令对象扩展。
class PaginateCommand {
String sort
String order
Integer max
Integer maxsteps
Integer offset
Integer total
}
子命令类
@Validateable
class MyOtherCommand extends PaginateCommand {
...
}
控制器
class SomeController {
def someService
def index(MyOtherCommand cmd) {
someService.loadSomeList(cmd)
return [cmd: cmd]
}
}
这一切都很好,我的控制器现在很好很简单。现在的问题是分页标签给我带来了问题。这是我最初认为可行的:
<g:paginate total="${cmd.total}" params="${cmd.properties}" />
但是,分页标记仅查看附加到请求的大多数值的参数,而不是在 params 属性上传递的参数。我必须手动将这些变量作为上面的属性传递。
当所有的分页变量绑定到命令对象(我假设)时,它们似乎都从请求参数中删除了。我想将这些变量保留在命令对象中,这样我就不必将请求参数传递给我的服务。让控制器在渲染之前重新填充参数似乎也适得其反。
我是否不得不填充分页标记中的每个参数,还是我错过了另一种方式?
<g:paginate total="${cmd.total}" offset="${cmd.offset}" max="${cmd.max}".... />
PS我正在使用Grails 2.3.6