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