Motivation

The Spring MVC ModelAttributeMethodProcessor includes many helpful extension methods that allow developers to extend and enhance the data binding capabilities of the class. Unfortunately, Spring WebFlux's equivalent class, the ModelAttributeMethodArgumentResolver, does not include these same extension methods. I am leveraging these extension methods, specifically the bindRequestParameters method, to provide valuable enhancements to my application. I would like to provide these same enhancements to the WebFlux portion of my application and am unable to do so at this time. I would like to update the WebFlux ModelAttributeMethodArgumentResolver to add the bindRequestParameters method.

Modifications

I created a new method called bindRequestParameters and encapsulated the WebExchangeDataBinder bind call inside of it. This method is marked as protected as it should only be used by children of this class. This change mirrors the behavior in the equivalent Spring MVC class (ModelAttributeMethodProcessor).

Result

The WebFlux ModelAttributeMethodArgumentResolver can now accept alternative data binding implementations mirroring the Web MVC behavior.