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(); }
