Skip to content

Commit 136aae1

Browse files
committed
Merge branch '2.3.x' into 2.4.x
Conflicts: grails-web-common/src/main/groovy/org/codehaus/groovy/grails/web/servlet/mvc/GrailsParameterMap.java
2 parents 8551856 + ea61366 commit 136aae1

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

grails-web-common/src/main/groovy/org/codehaus/groovy/grails/web/servlet/mvc/GrailsParameterMap.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,7 @@
1919
import java.io.UnsupportedEncodingException;
2020
import java.text.DateFormat;
2121
import java.text.SimpleDateFormat;
22-
import java.util.Date;
23-
import java.util.Iterator;
24-
import java.util.LinkedHashMap;
25-
import java.util.Map;
22+
import java.util.*;
2623
import java.util.concurrent.ConcurrentHashMap;
2724

2825
import javax.servlet.http.HttpServletRequest;
@@ -40,6 +37,7 @@
4037
import org.codehaus.groovy.grails.web.util.TypeConvertingMap;
4138
import org.codehaus.groovy.grails.web.util.WebUtils;
4239
import org.grails.databinding.DataBinder;
40+
import org.codehaus.groovy.runtime.DefaultGroovyMethods;
4341
import org.grails.databinding.DataBindingSource;
4442
import org.grails.databinding.SimpleMapDataBindingSource;
4543
import org.springframework.context.ApplicationContext;
@@ -251,6 +249,9 @@ public Object get(Object key) {
251249
returnValue = valueArray;
252250
}
253251
}
252+
else if(returnValue == null && (key instanceof Collection)) {
253+
return DefaultGroovyMethods.subMap(wrappedMap, (Collection)key);
254+
}
254255
}
255256
if ("date.struct".equals(returnValue)) {
256257
returnValue = lazyEvaluateDateParam(key);

grails-web-common/src/test/groovy/org/codehaus/groovy/grails/web/servlet/mvc/GrailsParameterMapTests.groovy

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,16 @@ class GrailsParameterMapTests extends GroovyTestCase {
1313
GrailsParameterMap theMap
1414
MockHttpServletRequest mockRequest = new MockHttpServletRequest()
1515

16+
void testSubmapViaArraySubscript() {
17+
mockRequest.addParameter("name", "Dierk Koenig")
18+
mockRequest.addParameter("dob", "01/01/1970")
19+
mockRequest.addParameter("address.postCode", "345435")
20+
mockRequest.addParameter("address.town", "Swindon")
21+
theMap = new GrailsParameterMap(mockRequest)
22+
23+
assert theMap['name', 'dob'] == [name:"Dierk Koenig", dob:"01/01/1970"]
24+
}
25+
1626
void testDateMessageSourceFormat() {
1727

1828
try {
@@ -288,6 +298,8 @@ class GrailsParameterMapTests extends GroovyTestCase {
288298
String name = (String) o
289299
params.put(name, theMap.get(name))
290300
}
301+
302+
291303
}
292304

293305
void testMultiDimensionParams() {

0 commit comments

Comments
 (0)