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

ahuber pushed a commit to branch 3961-row.action.routing
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 795af3b4f0b1ca1ce8ea874899684dd3e9d432cb
Author: andi-huber <[email protected]>
AuthorDate: Wed Jan 21 18:10:33 2026 +0100

    CAUSEWAY-3961: fixes Actions in Tables have wrong Result Routing
    
    Task-Url: https://issues.apache.org/jira/browse/CAUSEWAY-3961
---
 .../causeway/viewer/wicket/ui/exec/Mediator.java       |  2 +-
 .../viewer/wicket/ui/exec/PageRedirectRequest.java     | 18 ++++++++++++++----
 2 files changed, 15 insertions(+), 5 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..d5f29a9e6fc 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,9 +59,19 @@ static <T extends IRequestablePage> PageRedirectRequest<T> 
forPage(
         return new PageRedirectRequest<>(pageClass, null, pageInstance);
     }
 
+    /**
+     * Relative page URL, honors either {@link #pageParameters} as directly 
given
+     * or indirectly from the {@link #pageInstance} if present.
+     * If neither is present, params are <code>null</code>.
+     */
     String toUrl() {
+        var pageParametersIfAny = pageParameters!=null
+                ? pageParameters
+                : pageInstance!=null
+                    ? pageInstance.getPageParameters()
+                    : null;
         var handler = new BookmarkablePageRequestHandler(
-                new PageProvider(pageClass, pageParameters));
+                new PageProvider(pageClass, pageParametersIfAny));
         return RequestCycle.get().urlFor(handler)
             .toString();
     }

Reply via email to