Merge branch '6.2.x'
This commit is contained in:
@@ -125,7 +125,7 @@ public class ExtendedServletRequestDataBinder extends ServletRequestDataBinder {
|
||||
String name = names.nextElement();
|
||||
Object value = getHeaderValue(httpRequest, name);
|
||||
if (value != null) {
|
||||
name = StringUtils.uncapitalize(name.replace("-", ""));
|
||||
name = normalizeHeaderName(name);
|
||||
addValueIfNotPresent(mpvs, "Header", name, value);
|
||||
}
|
||||
}
|
||||
@@ -171,6 +171,10 @@ public class ExtendedServletRequestDataBinder extends ServletRequestDataBinder {
|
||||
return values;
|
||||
}
|
||||
|
||||
private static String normalizeHeaderName(String name) {
|
||||
return StringUtils.uncapitalize(name.replace("-", ""));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Resolver of values that looks up URI path variables.
|
||||
@@ -206,8 +210,10 @@ public class ExtendedServletRequestDataBinder extends ServletRequestDataBinder {
|
||||
if (request instanceof HttpServletRequest httpServletRequest) {
|
||||
Enumeration<String> enumeration = httpServletRequest.getHeaderNames();
|
||||
while (enumeration.hasMoreElements()) {
|
||||
String headerName = enumeration.nextElement();
|
||||
set.add(headerName.replaceAll("-", ""));
|
||||
String name = enumeration.nextElement();
|
||||
if (headerPredicate.test(name)) {
|
||||
set.add(normalizeHeaderName(name));
|
||||
}
|
||||
}
|
||||
}
|
||||
return set;
|
||||
|
||||
@@ -119,6 +119,23 @@ class ExtendedServletRequestDataBinderTests {
|
||||
assertThat(mpvs).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void headerPredicateWithConstructorArgs() {
|
||||
ExtendedServletRequestDataBinder binder = new ExtendedServletRequestDataBinder(null);
|
||||
binder.addHeaderPredicate(name -> !name.equalsIgnoreCase("Some-Int-Array"));
|
||||
binder.setTargetType(ResolvableType.forClass(DataBean.class));
|
||||
binder.setNameResolver(new BindParamNameResolver());
|
||||
|
||||
request.addHeader("Some-Int-Array", "1");
|
||||
request.addHeader("Some-Int-Array", "2");
|
||||
|
||||
binder.construct(request);
|
||||
|
||||
DataBean bean = (DataBean) binder.getTarget();
|
||||
|
||||
assertThat(bean.someIntArray()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void headerPredicate() {
|
||||
TestBinder binder = new TestBinder();
|
||||
|
||||
Reference in New Issue
Block a user