paramName + "' is not present but cannot be translated into a null value due to " +
"being declared as a primitive type. Consider declaring it as object wrapper type " +
"for the corresponding primitive type.");
}
}
ServletRequestDataBinder binder = createBinder(request, null, paramName);
initBinder(handler, paramName, binder, webRequest, request, response);
args[i] = binder.convertIfNecessary(paramValue, param.getParameterType(), param);
}
else {
// Bind request parameter onto object...
if (sessionAttributeSet != null &&
(sessionAttributeSet.contains(attrName) || sessionAttributeSet.contains(param.getParameterType())) &&
!implicitModel.containsKey(attrName)) {
HttpSession session = request.getSession(false);
if (session == null) {
throw new HttpSessionRequiredException(
"No session found - session required for attribute '" + attrName + "'");
}
Object sessionAttr = sessionAttributeStore.retrieveAttribute(webRequest, attrName);
if (sessionAttr == null) {
throw new HttpSessionRequiredException(
"Session attribute '" + attrName + "' required - not found in session");
}
sessionAttrNames.add(attrName);
implicitModel.addAttribute(attrName, sessionAttr);
}
Object bindObject = implicitModel.get(attrName);
if (bindObject == null) {
bindObject = BeanUtils.instantiateClass(param.getParameterType());
}
ServletRequestDataBinder binder = createBinder(request, bindObject, attrName);
initBinder(handler, attrName, binder, webRequest, request, response);
binder.bind(request);
args[i] = bindObject;
implicitModel.putAll(binder.getBindingResult().getModel());
if (args.length > i + 1 && Errors.class.isAssignableFrom(handlerMethod.getParameterTypes()[i + 1])) {
args[i + 1] = binder.getBindingResult();
i++;
}
else {
binder.closeNoCatch();
}
}
}
}
return args;