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 18f5a5702b4 CAUSEWAY-3815: implements column action specific routing
18f5a5702b4 is described below
commit 18f5a5702b4698c12d38a088b824caa184b46e28
Author: Andi Huber <[email protected]>
AuthorDate: Tue Nov 26 19:43:29 2024 +0100
CAUSEWAY-3815: implements column action specific routing
---
.../core/config/CausewayConfiguration.java | 4 +-
.../viewer/wicket/model/models/ActionModel.java | 9 ++
.../wicket/model/models/ActionResultModel.java | 10 +-
.../ui/actionresponse/ActionResultResponse.java | 134 ++++-----------------
.../ActionResultResponseHandlingStrategy.java | 36 +++---
.../ui/actionresponse/PageRedirectRequest.java | 35 +++---
.../wicket/ui/actionresponse/_ResponseUtil.java | 26 ++--
.../components/widgets/actionlink/ActionLink.java | 6 +-
.../wicket/ui/pages/obj/DomainObjectPage.java | 2 +-
.../wicket/ui/panels/FormExecutorDefault.java | 2 +-
10 files changed, 91 insertions(+), 173 deletions(-)
diff --git
a/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
b/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
index 32514d54a9d..5ddd1695251 100644
---
a/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
+++
b/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
@@ -2923,10 +2923,8 @@ public class CausewayConfiguration {
* That is, collections of domain objects are presented in the UI
as tables,
* where corresponding domain object actions are gathered into an
additional
* (typically trailing) column (labeled 'action-column').
- * <p>
- * Defaults to disabled, while we are still working on this
feature [CAUSEWAY-3815].
*/
- private boolean actionColumnEnabled = false;
+ private boolean actionColumnEnabled = true;
/**
* Whether actions, that on click will show a dialog,
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ActionModel.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ActionModel.java
index 0d30b76e485..bf2d9d9981e 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ActionModel.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ActionModel.java
@@ -65,8 +65,17 @@ implements UiActionForm, FormExecutorContext,
BookmarkableModel, IModel<ManagedO
* @since CAUSEWAY-3815
*/
public enum ColumnActionModifier {
+ /**
+ * don't interfere with the default action result route
+ */
NONE,
+ /**
+ * reload current page, irrespective of the action result
+ */
FORCE_STAY_ON_PAGE,
+ /**
+ * open the action result in a new (blank) browser tab or window
+ */
FORCE_NEW_BROWSER_WINDOW;
public boolean isNone() { return this == NONE; }
public boolean isForceStayOnPage() { return this ==
FORCE_STAY_ON_PAGE; }
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ActionResultModel.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ActionResultModel.java
index a87fed774f0..e25eb956a48 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ActionResultModel.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ActionResultModel.java
@@ -30,15 +30,11 @@ import
org.apache.causeway.core.metamodel.object.PackedManagedObject;
import
org.apache.causeway.core.security.authentication.logout.LogoutMenu.LoginRedirect;
import
org.apache.causeway.viewer.wicket.model.models.FormExecutor.ActionResultResponseType;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
import lombok.NonNull;
-import lombok.experimental.Accessors;
-@AllArgsConstructor @Getter @Accessors(fluent=true) //java record candidate
-public class ActionResultModel {
- private final ActionResultResponseType responseType;
- private final ManagedObject resultAdapter;
+public record ActionResultModel(
+ ActionResultResponseType responseType,
+ ManagedObject resultAdapter) {
public static ActionResultModel determineFor(
@NonNull final ActionModel actionModel,
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/ActionResultResponse.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/ActionResultResponse.java
index 6f106bbbb33..48d15dd054c 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/ActionResultResponse.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/ActionResultResponse.java
@@ -20,7 +20,6 @@ package org.apache.causeway.viewer.wicket.ui.actionresponse;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.request.cycle.RequestCycle;
import org.springframework.lang.Nullable;
@@ -29,7 +28,6 @@ import
org.apache.causeway.core.metamodel.object.ManagedObject;
import org.apache.causeway.viewer.wicket.model.models.ActionModel;
import org.apache.causeway.viewer.wicket.ui.pages.obj.DomainObjectPage;
-import lombok.Getter;
import lombok.NonNull;
/**
@@ -38,14 +36,30 @@ import lombok.NonNull;
* {@link #withHandler(IRequestHandler) redirect} to a
* handler (eg a download).
*/
-public class ActionResultResponse {
-
- @Getter
- private final ActionResultResponseHandlingStrategy handlingStrategy;
- private final IRequestHandler handler;
- private final PageRedirectRequest<?> pageRedirect;
- private final AjaxRequestTarget target;
- private final String url;
+public record ActionResultResponse(
+ ActionResultResponseHandlingStrategy handlingStrategy,
+ /**
+ * Populated only if {@link #handlingStrategy()}
+ * is {@link ActionResultResponseHandlingStrategy#SCHEDULE_HANDLER}
+ */
+ IRequestHandler handler,
+ /**
+ * Populated only if {@link #handlingStrategy()}
+ * is {@link ActionResultResponseHandlingStrategy#REDIRECT_TO_PAGE}
+ */
+ PageRedirectRequest<?> pageRedirect,
+ /**
+ * Populated only if {@link #handlingStrategy()} is
+ * either {@link
ActionResultResponseHandlingStrategy#OPEN_URL_IN_NEW_BROWSER_WINDOW}
+ * or {@link
ActionResultResponseHandlingStrategy#OPEN_URL_IN_SAME_BROWSER_WINDOW}
+ */
+ AjaxRequestTarget ajaxTarget,
+ /**
+ * Populated only if {@link #handlingStrategy()} is
+ * either {@link
ActionResultResponseHandlingStrategy#OPEN_URL_IN_NEW_BROWSER_WINDOW}
+ * or {@link
ActionResultResponseHandlingStrategy#OPEN_URL_IN_SAME_BROWSER_WINDOW}
+ */
+ String url) {
public static ActionResultResponse toDomainObjectPage(final @NonNull
ManagedObject entityOrViewmodel) {
var pageRedirectRequest = PageRedirectRequest.forPageClassAndBookmark(
@@ -71,109 +85,13 @@ public class ActionResultResponse {
}
static ActionResultResponse openUrlInBrowser(
- final AjaxRequestTarget target,
+ final AjaxRequestTarget ajaxTarget,
final String url,
final @NonNull OpenUrlStrategy openUrlStrategy) {
return new ActionResultResponse(
openUrlStrategy.isNewWindow()
?
ActionResultResponseHandlingStrategy.OPEN_URL_IN_NEW_BROWSER_WINDOW
:
ActionResultResponseHandlingStrategy.OPEN_URL_IN_SAME_BROWSER_WINDOW,
- null, null, target, url);
- }
-
- ActionResultResponse(
- final ActionResultResponseHandlingStrategy strategy,
- final IRequestHandler handler,
- final PageRedirectRequest<?> pageRedirect,
- final AjaxRequestTarget target,
- final String url) {
- this.handlingStrategy = strategy;
- this.handler = handler;
- this.pageRedirect = pageRedirect;
- this.target = target;
- this.url = url;
- }
-
- //TODO[CAUSEWAY-3815] WIP should create URL from current page then open in
new browser
- ActionResultResponse withForceNewBrowserWindow() {
- var url = this.url!=null
- ? this.url
- : RequestCycle.get().getRequest().getOriginalUrl().toString();
-
- return new ActionResultResponse(
-
ActionResultResponseHandlingStrategy.OPEN_URL_IN_NEW_BROWSER_WINDOW,
- handler, pageRedirect, target, url);
- }
-
- //TODO[CAUSEWAY-3815] WIP should force reload the entire page (or do a
proper partial page update (AJAX) of the originating table)
- ActionResultResponse withForceReload() {
- return this;
- }
-
- /**
- * Populated only if {@link #getHandlingStrategy() handling strategy}
- * is {@link ActionResultResponseHandlingStrategy#SCHEDULE_HANDLER}
- */
- public IRequestHandler getHandler() {
- return handler;
+ null, null, ajaxTarget, url);
}
-
- /**
- * Populated only if {@link #getHandlingStrategy() handling strategy}
- * is {@link ActionResultResponseHandlingStrategy#REDIRECT_TO_PAGE}
- */
- public PageRedirectRequest<?> getPageRedirect() {
- return pageRedirect;
- }
-
- /**
- * Populated only if {@link #getHandlingStrategy() handling strategy} is
- * either {@link
ActionResultResponseHandlingStrategy#OPEN_URL_IN_NEW_BROWSER_WINDOW}
- * or {@link
ActionResultResponseHandlingStrategy#OPEN_URL_IN_SAME_BROWSER_WINDOW}
- */
- public AjaxRequestTarget getAjaxTarget() {
- return target;
- }
-
- /**
- * Populated only if {@link #getHandlingStrategy() handling strategy} is
- * either {@link
ActionResultResponseHandlingStrategy#OPEN_URL_IN_NEW_BROWSER_WINDOW}
- * or {@link
ActionResultResponseHandlingStrategy#OPEN_URL_IN_SAME_BROWSER_WINDOW}
- */
- public String getUrl() {
- return url;
- }
-
- @Override
- public String toString() {
- return String.format("ActionResultResponse["
- + "handlingStrategy=%s,"
- + "requestHandler=%s,"
- + "pageRedirect=%s,"
- + "ajaxTarget=%s,"
- + "url=%s"
- + "]",
- handlingStrategy.name(),
- handler,
- pageRedirect,
- target,
- url);
- }
-
- /** introduced for debugging */
- public String toStringMultiline() {
- return String.format("ActionResultResponse {\n"
- + "\thandlingStrategy=%s,\n"
- + "\trequestHandler=%s,\n"
- + "\tpageRedirect=%s,\n"
- + "\tajaxTarget=%s,\n"
- + "\turl=%s\n"
- + "}",
- handlingStrategy.name(),
- handler,
- pageRedirect,
- target,
- url);
- }
-
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/ActionResultResponseHandlingStrategy.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/ActionResultResponseHandlingStrategy.java
index 79360117321..97f4a606b5d 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/ActionResultResponseHandlingStrategy.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/ActionResultResponseHandlingStrategy.java
@@ -21,7 +21,6 @@ package org.apache.causeway.viewer.wicket.ui.actionresponse;
import java.time.Duration;
import org.apache.wicket.Component;
-import org.apache.wicket.Page;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AbstractAjaxBehavior;
import org.apache.wicket.request.IRequestHandler;
@@ -58,7 +57,7 @@ public enum ActionResultResponseHandlingStrategy {
MetaModelContext.instance().ifPresent(mmc->mmc.getTransactionService().flushTransaction());
// "redirect-after-post"
- resultResponse.getPageRedirect().applyTo(RequestCycle.get());
+ resultResponse.pageRedirect().apply();
}
},
SCHEDULE_HANDLER {
@@ -67,34 +66,31 @@ public enum ActionResultResponseHandlingStrategy {
final ActionResultResponse resultResponse) {
final RequestCycle requestCycle = RequestCycle.get();
- AjaxRequestTarget target =
requestCycle.find(AjaxRequestTarget.class).orElse(null);
+ var ajaxTarget =
requestCycle.find(AjaxRequestTarget.class).orElse(null);
- if (target == null) {
+ if (ajaxTarget == null) {
// non-Ajax request => just stream the Lob to the browser
// or if this is a no-arg action, there also will be no parent
for the component
-
requestCycle.scheduleRequestHandlerAfterCurrent(resultResponse.getHandler());
+
requestCycle.scheduleRequestHandlerAfterCurrent(resultResponse.handler());
} else {
// otherwise,
// Ajax request => respond with a redirect to be able to
stream the Lob to the client
- final IRequestHandler requestHandler =
resultResponse.getHandler();
- if(requestHandler instanceof ResourceStreamRequestHandler) {
- ResourceStreamRequestHandler scheduledHandler =
(ResourceStreamRequestHandler) requestHandler;
- StreamAfterAjaxResponseBehavior streamingBehavior = new
StreamAfterAjaxResponseBehavior(scheduledHandler);
- final Page page = target.getPage();
+ final IRequestHandler requestHandler =
resultResponse.handler();
+ if(requestHandler instanceof ResourceStreamRequestHandler
scheduledHandler) {
+ var streamingBehavior = new
StreamAfterAjaxResponseBehavior(scheduledHandler);
+ var page = ajaxTarget.getPage();
page.add(streamingBehavior);
CharSequence callbackUrl =
streamingBehavior.getCallbackUrl();
- scheduleJs(target, javascriptFor_sameWindow(callbackUrl),
10);
- } else if(requestHandler instanceof
RedirectRequestHandlerWithOpenUrlStrategy) {
- final RedirectRequestHandlerWithOpenUrlStrategy
redirectHandler =
- (RedirectRequestHandlerWithOpenUrlStrategy)
requestHandler;
+ scheduleJs(ajaxTarget,
javascriptFor_sameWindow(callbackUrl), 10);
+ } else if(requestHandler instanceof
RedirectRequestHandlerWithOpenUrlStrategy redirectHandler) {
final String url = redirectHandler.getRedirectUrl();
final String fullUrl = expanded(requestCycle, url);
if(redirectHandler.getOpenUrlStrategy().isNewWindow()) {
- scheduleJs(target, javascriptFor_newWindow(fullUrl),
100);
+ scheduleJs(ajaxTarget,
javascriptFor_newWindow(fullUrl), 100);
} else {
- scheduleJs(target, javascriptFor_sameWindow(fullUrl),
100);
+ scheduleJs(ajaxTarget,
javascriptFor_sameWindow(fullUrl), 100);
}
} else {
throw _Exceptions.unrecoverable(
@@ -110,11 +106,11 @@ public enum ActionResultResponseHandlingStrategy {
public void handleResults(
final ActionResultResponse resultResponse) {
- final String url = resultResponse.getUrl();
+ final String url = resultResponse.url();
final RequestCycle requestCycle = RequestCycle.get();
final String fullUrl = expanded(requestCycle, url);
- scheduleJs(resultResponse.getAjaxTarget(),
javascriptFor_newWindow(fullUrl), 100);
+ scheduleJs(resultResponse.ajaxTarget(),
javascriptFor_newWindow(fullUrl), 100);
}
},
OPEN_URL_IN_SAME_BROWSER_WINDOW {
@@ -122,11 +118,11 @@ public enum ActionResultResponseHandlingStrategy {
public void handleResults(
final ActionResultResponse resultResponse) {
- final String url = resultResponse.getUrl();
+ final String url = resultResponse.url();
final RequestCycle requestCycle = RequestCycle.get();
final String fullUrl = expanded(requestCycle, url);
- scheduleJs(resultResponse.getAjaxTarget(),
javascriptFor_sameWindow(fullUrl), 100);
+ scheduleJs(resultResponse.ajaxTarget(),
javascriptFor_sameWindow(fullUrl), 100);
}
};
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/PageRedirectRequest.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/PageRedirectRequest.java
index 50a68bdb888..ca919cb6367 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/PageRedirectRequest.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/PageRedirectRequest.java
@@ -18,6 +18,8 @@
*/
package org.apache.causeway.viewer.wicket.ui.actionresponse;
+import org.apache.wicket.core.request.handler.BookmarkablePageRequestHandler;
+import org.apache.wicket.core.request.handler.PageProvider;
import org.apache.wicket.request.component.IRequestablePage;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -27,16 +29,12 @@ import org.springframework.lang.Nullable;
import org.apache.causeway.applib.services.bookmark.Bookmark;
import org.apache.causeway.viewer.wicket.model.util.PageParameterUtils;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
import lombok.NonNull;
-@AllArgsConstructor(access = AccessLevel.PRIVATE)
-public class PageRedirectRequest<T extends IRequestablePage> {
-
- private final @NonNull Class<T> pageClass;
- private final @Nullable PageParameters pageParameters;
- private final @Nullable IRequestablePage pageInstance;
+public record PageRedirectRequest<T extends IRequestablePage>(
+ @NonNull Class<T> pageClass,
+ @Nullable PageParameters pageParameters,
+ @Nullable IRequestablePage pageInstance) {
public static <T extends IRequestablePage> PageRedirectRequest<T>
forPageClass(
final @NonNull Class<T> pageClass,
@@ -63,11 +61,16 @@ public class PageRedirectRequest<T extends
IRequestablePage> {
return new PageRedirectRequest<>(pageClass, null, pageInstance);
}
- public void applyTo(
- final @Nullable RequestCycle requestCycle) {
- if(requestCycle==null) {
- return;
- }
+ public String toUrl() {
+ var handler = new BookmarkablePageRequestHandler(
+ new PageProvider(pageClass, pageParameters));
+ return RequestCycle.get().urlFor(handler)
+ .toString();
+ }
+
+ public void apply() {
+ var requestCycle = RequestCycle.get();
+ if(requestCycle==null) return;
if(pageParameters!=null) {
requestCycle.setResponsePage(pageClass, pageParameters);
return;
@@ -79,10 +82,4 @@ public class PageRedirectRequest<T extends IRequestablePage>
{
requestCycle.setResponsePage(pageClass);
}
- @Override
- public String toString() {
- return
String.format("PageRedirectRequest[pageClass=%s,pageParameters=%s]",
- pageClass.getName(), pageParameters);
- }
-
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/_ResponseUtil.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/_ResponseUtil.java
index d877eb2e91c..e1c4b89e874 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/_ResponseUtil.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/actionresponse/_ResponseUtil.java
@@ -62,17 +62,21 @@ class _ResponseUtil {
var actionResultModel = ActionResultModel.determineFor(actionModel,
resultAdapterIfAny, ajaxTarget);
var response = actionResultResponse(actionModel, ajaxTarget,
actionResultModel);
- // honor any modifiers
- switch(actionModel.columnActionModifier()) {
- case NONE:
- return response;
- case FORCE_STAY_ON_PAGE:
- return response.withForceReload();
- case FORCE_NEW_BROWSER_WINDOW:
- return response.withForceNewBrowserWindow();
- default:
- throw
_Exceptions.unmatchedCase(actionModel.columnActionModifier());
- }
+ //TODO[causeway-viewer-wicket-ui-3815] handling only if we have a page
redirect, other cases ignored (eg. download action)
+ return response.pageRedirect()!=null
+ ? switch (actionModel.columnActionModifier()) {
+ // identity op
+ case NONE -> response;
+ // force full page reload
+ case FORCE_STAY_ON_PAGE -> new ActionResultResponse(
+
ActionResultResponseHandlingStrategy.OPEN_URL_IN_SAME_BROWSER_WINDOW,
+ null, null, ajaxTarget, response.pageRedirect().toUrl());
// page redirect should point to current page
+ // open result page in new browser tab/win
+ case FORCE_NEW_BROWSER_WINDOW -> new ActionResultResponse(
+
ActionResultResponseHandlingStrategy.OPEN_URL_IN_NEW_BROWSER_WINDOW,
+ null, null, ajaxTarget, response.pageRedirect().toUrl());
// page redirect should point to action result
+ }
+ : response;
}
// -- HELPER
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/actionlink/ActionLink.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/actionlink/ActionLink.java
index c4895ab5b18..2c7f50a165c 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/actionlink/ActionLink.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/actionlink/ActionLink.java
@@ -164,7 +164,7 @@ implements HasMetaModelContext, Menuable, HasManagedAction {
}
@Override
- public void onClick(final AjaxRequestTarget target) {
+ public void onClick(final AjaxRequestTarget ajaxTarget) {
_Probe.entryPoint(EntryPoint.USER_INTERACTION, "Wicket Ajax Request, "
+ "originating from User clicking an Action Link.");
@@ -175,13 +175,13 @@ implements HasMetaModelContext, Menuable,
HasManagedAction {
|| actionModel.getInlinePromptContext() == null) {
if(actionModel.hasParameters()) {
- startDialogWithParams(target);
+ startDialogWithParams(ajaxTarget);
} else {
executeWithoutParams();
}
} else {
- startDialogInline(target);
+ startDialogInline(ajaxTarget);
}
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/obj/DomainObjectPage.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/obj/DomainObjectPage.java
index d978cb1f3bb..c88bbc70bf9 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/obj/DomainObjectPage.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/obj/DomainObjectPage.java
@@ -61,7 +61,7 @@ public class DomainObjectPage extends PageAbstract {
private static final long serialVersionUID = 144368606134796079L;
private static final String ID_DOMAIN_OBJECT_CONTAINER =
"domainObjectContainer";
- private static final String ID_DOMAIN_OBJECT = "domainObject";
+ private static final String ID_DOMAIN_OBJECT =
UiComponentType.DOMAIN_OBJECT.getId();
private static final String ID_WHEREAMI_CONTAINER = "whereAmI-container";
private static final String ID_WHEREAMI_ITEMS = "whereAmI-items";
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/FormExecutorDefault.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/FormExecutorDefault.java
index e0a02dba7d0..7d7638b7819 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/FormExecutorDefault.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/FormExecutorDefault.java
@@ -130,7 +130,7 @@ implements FormExecutor, HasCommonContext {
// redirect using associated strategy
// XXX note: on property edit, triggers SQL update (on JPA)
resultResponse
- .getHandlingStrategy()
+ .handlingStrategy()
.handleResults(resultResponse);
return FormExecutionOutcome.SUCCESS_AND_REDIRECED_TO_RESULT_PAGE;
// success (valid args), allow redirect