Following is a way I generally use to pass the parameters from GSP to action

<g:link controller="myController" action="MyAction" params="[key1: val1, key2: val2]">Link</g:link>

but when number of parameters increases it becomes little harder to manage.

For example lets take g:sortableColumn with pagination in the view. Here you required to pass the max and offset in sortableColumn

<g:sortableColumn property="username" params="[max: max, offset: offset]" title="Username"/>

And if in the view we have custom search functionality then we need to pass these search parameters with pagination and sortableColumn as well. Then code becomes

<g:sortableColumn property="username" params="[max: max, offset: offset, key1: val1, key2: val2, ..., keyN: valN]" title="Username"/>

Grails provide a very simple way to pass all these parameters to action

<g:sortableColumn property="username" params="${pageScope.variables}" title="Username"/>

pageScope.variables sends all the variables available in the page scope to the action or template.