This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch v3
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/v3 by this push:
     new e435b563574 Merge pull request #3359 from 
apache/3961-row.action.routing
e435b563574 is described below

commit e435b5635741c5b961aea26c5e923ab06a4c427c
Author: Andi Huber <[email protected]>
AuthorDate: Wed Jan 21 18:24:26 2026 +0100

    Merge pull request #3359 from apache/3961-row.action.routing
    
    CAUSEWAY-3961: Actions in Tables have wrong Result Routing
---
 .../causeway/viewer/wicket/ui/exec/Mediator.java   |  2 +-
 .../viewer/wicket/ui/exec/PageRedirectRequest.java | 34 +++++++++++++++++-----
 2 files changed, 28 insertions(+), 8 deletions(-)

diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/exec/Mediator.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/exec/Mediator.java
index 428181c499a..8b5f99f06ac 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/exec/Mediator.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/exec/Mediator.java
@@ -71,7 +71,7 @@ enum ExecutionResultHandlingStrategy {
     }
 
     static Mediator toDomainObjectPage(final @NonNull ManagedObject 
entityOrViewmodel) {
-        var pageRedirectRequest = PageRedirectRequest.forPageClassAndBookmark(
+        var pageRedirectRequest = PageRedirectRequest.forBookmark(
                 DomainObjectPage.class, 
entityOrViewmodel.refreshBookmark().orElseThrow());
         return Mediator.toPage(pageRedirectRequest);
     }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/exec/PageRedirectRequest.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/exec/PageRedirectRequest.java
index 9f2d98c9764..2e5170967b2 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/exec/PageRedirectRequest.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/exec/PageRedirectRequest.java
@@ -34,16 +34,16 @@ record PageRedirectRequest<T extends IRequestablePage>(
     @Nullable PageParameters pageParameters,
     @Nullable IRequestablePage pageInstance) {
 
-    static <T extends IRequestablePage> PageRedirectRequest<T> forPageClass(
+    static <T extends IRequestablePage> PageRedirectRequest<T> 
forPageParameters(
             final @NonNull Class<T> pageClass,
             final @NonNull PageParameters pageParameters) {
         return new PageRedirectRequest<>(pageClass, pageParameters, null);
     }
 
-    static <T extends IRequestablePage> PageRedirectRequest<T> 
forPageClassAndBookmark(
+    static <T extends IRequestablePage> PageRedirectRequest<T> forBookmark(
             final @NonNull Class<T> pageClass,
             final @NonNull Bookmark bookmark) {
-        return forPageClass(
+        return forPageParameters(
                         pageClass,
                         
PageParameterUtils.createPageParametersForBookmark(bookmark));
     }
@@ -59,6 +59,26 @@ static <T extends IRequestablePage> PageRedirectRequest<T> 
forPage(
         return new PageRedirectRequest<>(pageClass, null, pageInstance);
     }
 
+    /**
+     * Canonical constructor, honors either {@link #pageParameters} as 
directly given
+     * or indirectly from the {@link #pageInstance} if present.
+     * If neither is present, pageParameters are <code>null</code>
+     *
+     * @param pageClass page class
+     * @param pageParameters (nullable)
+     * @param pageInstance (nullable)
+     */
+    PageRedirectRequest {
+        pageParameters = pageParameters!=null
+            ? pageParameters
+            : pageInstance!=null
+                ? pageInstance.getPageParameters()
+                : null;
+    }
+
+    /**
+     * Relative page URL
+     */
     String toUrl() {
         var handler = new BookmarkablePageRequestHandler(
                 new PageProvider(pageClass, pageParameters));
@@ -69,14 +89,14 @@ String toUrl() {
     void apply() {
         var requestCycle = RequestCycle.get();
         if(requestCycle==null) return;
-        if(pageParameters!=null) {
-            requestCycle.setResponsePage(pageClass, pageParameters);
-            return;
-        }
         if(pageInstance!=null) {
             requestCycle.setResponsePage(pageInstance);
             return;
         }
+        if(pageParameters!=null) {
+            requestCycle.setResponsePage(pageClass, pageParameters);
+            return;
+        }
         requestCycle.setResponsePage(pageClass);
     }
 

Reply via email to