在controller和gsp中,有两个可用变量:
params
-tahat包含所有参数的映射(来自查询字符串的GET和来自表单的POST)request
-HttpServletRequest
对象如何获取仅用于POST的参数或仅用于GET(查询字符串)的参数?我需要两种类型的参数,但是在不同的 map 中。
我知道,
HttpServletRequest
对象包含有关查询字符串的信息,但是我正在寻找不实现查询字符串解析器的解决方案。
最佳答案
我已经通过使用org.codehaus.groovy.grails.web.util.WebUtils
解析查询字符串解决了这个问题,然后将这些数据放入HttpServletRequest
属性。
现在,我可以使用request.getAttribute('paramsGet')
或request.getAttribute('paramsPost')
。
Grails过滤器非常有用,因此:
package com.selly.filters
import org.codehaus.groovy.grails.web.util.WebUtils
class ParamsFilters {
List globalParams = [
"controller",
"action",
"format"
]
def filters = {
all(controller:'*', action:'*') {
before = {
Map paramsRequest = params.findAll {
return !globalParams.contains(it.key)
}
Map paramsGet = WebUtils.fromQueryString(request.getQueryString() ?: "")
Map paramsPost = paramsRequest.minus(paramsGet)
request.setAttribute('paramsGet', paramsGet)
request.setAttribute('paramsPost', paramsPost)
//println request.getAttribute('paramsGet')
//println request.getAttribute('paramsPost')
}
after = { Map model ->
}
afterView = { Exception e ->
}
}
}
}
关于spring - Grails:仅POST或GET httprequest参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21204089/