diff --git a/typo3/sysext/fluid/Classes/Core/Widget/WidgetRequestBuilder.php b/typo3/sysext/fluid/Classes/Core/Widget/WidgetRequestBuilder.php
index df84f9632cae1f0e9ab111aea71c68ed7d633a5f..f1e6a861bd05dc52365e1d693e5108df7a88f7f7 100644
--- a/typo3/sysext/fluid/Classes/Core/Widget/WidgetRequestBuilder.php
+++ b/typo3/sysext/fluid/Classes/Core/Widget/WidgetRequestBuilder.php
@@ -51,7 +51,17 @@ class WidgetRequestBuilder extends RequestBuilder
             $baseUri .= TYPO3_mainDir;
         }
 
-        $request = $this->objectManager->get(WidgetRequest::class);
+        $rawGetArguments = GeneralUtility::_GET();
+        if (!isset($rawGetArguments['fluid-widget-id'])) {
+            // Low level test, WidgetRequestHandler returns false in canHandleRequest () if this is not set
+            throw new \InvalidArgumentException(
+                'No Fluid Widget ID was given.',
+                1521190675
+            );
+        }
+        $widgetContext = $this->ajaxWidgetContextHolder->get($rawGetArguments['fluid-widget-id']);
+
+        $request = $this->objectManager->get(WidgetRequest::class, $widgetContext->getControllerObjectName());
         $request->setRequestUri(GeneralUtility::getIndpEnv('TYPO3_REQUEST_URL'));
         $request->setBaseUri($baseUri);
         $request->setMethod($_SERVER['REQUEST_METHOD'] ?? null);
@@ -60,18 +70,9 @@ class WidgetRequestBuilder extends RequestBuilder
         } else {
             $request->setArguments(GeneralUtility::_GET());
         }
-        $rawGetArguments = GeneralUtility::_GET();
         if (isset($rawGetArguments['action'])) {
             $request->setControllerActionName($rawGetArguments['action']);
         }
-        if (!isset($rawGetArguments['fluid-widget-id'])) {
-            // Low level test, WidgetRequestHandler returns false in canHandleRequest () if this is not set
-            throw new \InvalidArgumentException(
-                'No Fluid Widget ID was given.',
-                1521190675
-            );
-        }
-        $widgetContext = $this->ajaxWidgetContextHolder->get($rawGetArguments['fluid-widget-id']);
         $request->setWidgetContext($widgetContext);
         return $request;
     }
diff --git a/typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetRequestBuilderTest.php b/typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetRequestBuilderTest.php
index 4bd353ef49287a5544705f4f3f01e9d813157737..0956beb11eb8fde739daf46740bdcfe44e6e714d 100644
--- a/typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetRequestBuilderTest.php
+++ b/typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetRequestBuilderTest.php
@@ -60,7 +60,7 @@ class WidgetRequestBuilderTest extends UnitTestCase
         $this->widgetRequestBuilder = $this->getAccessibleMock(WidgetRequestBuilder::class, ['setArgumentsFromRawRequestData']);
         $this->mockWidgetRequest = $this->createMock(WidgetRequest::class);
         $this->mockObjectManager = $this->createMock(ObjectManagerInterface::class);
-        $this->mockObjectManager->expects(self::once())->method('get')->with(WidgetRequest::class)->willReturn($this->mockWidgetRequest);
+        $this->mockObjectManager->expects(self::any())->method('get')->with(WidgetRequest::class)->willReturn($this->mockWidgetRequest);
         $this->widgetRequestBuilder->_set('objectManager', $this->mockObjectManager);
         $this->mockWidgetContext = $this->createMock(WidgetContext::class);
         $this->mockAjaxWidgetContextHolder = $this->createMock(AjaxWidgetContextHolder::class);