Grails 3 - 转发过滤参数
Grails 3 - forward with filtered params
在我的 Grails 3 controller 中有两个 actions
def one() {
forward([ action: 'two', params: [ a: 3 ] ])
}
def two() {
println params
}
当我调用/myController/one?a=1
时,打印的参数是
[a:[3, 1], controller:myController, action:two]
说我对这个结果有点惊讶,我接着改变 one
动作如下
def one() {
params.remove('a')
println params
forward([ action: 'two', params: [ a: 3 ] ])
}
两个 println
加起来显示
[controller:myController, action:one]
[a:[3, 1], controller:myController, action:two]
后者再次包括原始 a
参数的值和新的自定义值。
我的问题是:我可以做些什么来摆脱原始值,而无需采取丑陋的变通办法(比如为我的参数使用不同的名称)?
我想来自 Graeme Rocher 的 this comment 解决了对整体可行性的任何疑问:
A forward is supposed to forward all of the origin params [...]
However there is no way with the way current servlets work to "override" a parameter, the originals are always retained on a forward.
在我的 Grails 3 controller 中有两个 actions
def one() {
forward([ action: 'two', params: [ a: 3 ] ])
}
def two() {
println params
}
当我调用/myController/one?a=1
时,打印的参数是
[a:[3, 1], controller:myController, action:two]
说我对这个结果有点惊讶,我接着改变 one
动作如下
def one() {
params.remove('a')
println params
forward([ action: 'two', params: [ a: 3 ] ])
}
两个 println
加起来显示
[controller:myController, action:one]
[a:[3, 1], controller:myController, action:two]
后者再次包括原始 a
参数的值和新的自定义值。
我的问题是:我可以做些什么来摆脱原始值,而无需采取丑陋的变通办法(比如为我的参数使用不同的名称)?
我想来自 Graeme Rocher 的 this comment 解决了对整体可行性的任何疑问:
A forward is supposed to forward all of the origin params [...]
However there is no way with the way current servlets work to "override" a parameter, the originals are always retained on a forward.