package com.cloudroam.common.configuration;
|
|
import org.springframework.util.Assert;
|
import org.springframework.web.bind.ServletRequestDataBinder;
|
import org.springframework.web.bind.WebDataBinder;
|
import org.springframework.web.context.request.NativeWebRequest;
|
import org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor;
|
|
import javax.servlet.ServletRequest;
|
|
/**
|
* @author
|
*
|
* A customizing Servlet-specific ModelAttributeMethodProcessor that applies data binding through
|
* a WebDataBinder of type CustomServletModelAttributeMethodProcessor.
|
*/
|
public class CustomServletModelAttributeMethodProcessor extends ServletModelAttributeMethodProcessor {
|
|
public CustomServletModelAttributeMethodProcessor(final boolean annotationNotRequired) {
|
super(annotationNotRequired);
|
}
|
|
@Override
|
protected void bindRequestParameters(WebDataBinder binder, NativeWebRequest request) {
|
ServletRequest servletRequest = request.getNativeRequest(ServletRequest.class);
|
Assert.state(servletRequest != null, "No ServletRequest");
|
ServletRequestDataBinder servletBinder = (ServletRequestDataBinder) binder;
|
|
// ServletModelAttributeMethodProcessor 此处使用的 servletBinder.bind(servletRequest)
|
// 修改的目的是为了将 ServletRequestDataBinder 换成自定的 CustomServletRequestDataBinder
|
new CustomServletRequestDataBinder(servletBinder.getTarget()).bind(servletRequest);
|
}
|
|
}
|