我注意到在 Grails 控制器中,控制器中有一个 params 对象,请求上有一个 params 对象。
有什么不同?
paramsin controller 是 Grails Controller Artefact 中的一个属性(即getParams()),它将请求参数表示为一个mutableHashMap,它提供了在应用程序中进行修改的灵活性。
与request.getParameterMap()相比,它为您提供了一个不可变的地图,您不能像在 params 中那样修改它。
话虽如此,我想你指的是parameterMap而不是paramsin request。:)
params在控制器中的GetParamsDynamicProperty定义为:
paramsMap = new GrailsParameterMap(request);
request.params在GrailsWebRequest中定义为:
if (originalParams == null) {
originalParams = new GrailsParameterMap(getCurrentRequest());
}
params = (GrailsParameterMap)originalParams.clone();
两者都是从当前请求创建的,并且应该包含相同的数据。