blob: 1daca69efd24f512e936693caabf2a30866b50f6 [file]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>@ActionLayout :: causeway</title>
<link rel="canonical" href="https://causeway.apache.org/refguide/latest/applib/index/annotation/ActionLayout.html">
<meta name="generator" content="Antora 3.1.14">
<link rel="stylesheet" href="../../../../../_/css/site.css">
<link rel="stylesheet" href="../../../../../_/css/site-custom.css">
<link rel="home" href="https://causeway.apache.org" title="causeway">
</head>
<body class="article">
<header class="header">
<nav class="navbar">
<div class="navbar-brand">
<a class="navbar-item" href="https://causeway.apache.org">
<span class="icon">
<img src="../../../../../_/img/causeway-logo-no-words-65x48.png"></img>
</span>
<span class="navbar-title">causeway</span>
</a>
<button class="navbar-burger" data-target="topbar-nav">
<span></span>
<span></span>
<span></span>
</button>
</div>
<div id="topbar-nav" class="navbar-menu">
<a class="navbar-end">
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Quick Start</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Starter Apps</span>
<a class="navbar-item" href="../../../../../docs/latest/starters/helloworld.html">Hello World</a>
<a class="navbar-item" href="../../../../../docs/latest/starters/simpleapp.html">Simple App</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Learning &amp; Tutorials</span>
<a class="navbar-item" href="../../../../../docs/latest/reference/about.html">Reference App</a>
<a class="navbar-item" href="https://danhaywood.gitlab.io/isis-petclinic-tutorial-docs/petclinic/1.16.2/intro.html">Petclinic</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Resources</span>
<a class="navbar-item" href="../../../../../docs/latest/resources/cheatsheet.html">Cheatsheet</a>
<a class="navbar-item" href="../../../../../docs/latest/resources/icons.html">Icons</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Guides</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Core</span>
<a class="navbar-item" href="../../../../../userguide/latest/about.html">User Guide</a>
<a class="navbar-item" href="../../../../../refguide/latest/about.html">Reference Guide</a>
<a class="navbar-item" href="../../../../../testing/latest/about.html">Testing Guide</a>
<a class="navbar-item" href="../../../../../security/latest/about.html">Security Guide</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">For use in apps</span>
<a class="navbar-item" href="../../../../../valuetypes/latest/about.html">Value Types</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Development</span>
<a class="navbar-item" href="../../../../../setupguide/latest/about.html">Setup Guide</a>
<a class="navbar-item" href="../../../../../conguide/latest/about.html">Contributors' Guide</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Components</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Security</span>
<a class="navbar-item" href="../../../../../security/latest/bypass/about.html">Bypass</a>
<a class="navbar-item" href="../../../../../security/latest/simple/about.html">Simple</a>
<a class="navbar-item" href="../../../../../security/latest/spring/about.html">Spring</a>
<a class="navbar-item" href="../../../../../security/latest/keycloak/about.html">Keycloak</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Viewers</span>
<a class="navbar-item" href="../../../../../vw/latest/about.html">Web UI (Wicket)</a>
<a class="navbar-item" href="../../../../../gqlv/latest/about.html">GraphQL API</a>
<a class="navbar-item" href="../../../../../vro/latest/about.html">REST API (Restful Objects)</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Persistence</span>
<a class="navbar-item" href="../../../../../pjpa/latest/about.html">JPA (EclipseLink)</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Extensions</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Core</span>
<a class="navbar-item" href="../../../../../userguide/latest/commandlog/about.html">Command Log</a>
<a class="navbar-item" href="../../../../../userguide/latest/docgen/about.html">Doc Gen</a>
<a class="navbar-item" href="../../../../../userguide/latest/executionlog/about.html">Execution Log</a>
<a class="navbar-item" href="../../../../../userguide/latest/executionoutbox/about.html">Execution Outbox</a>
<a class="navbar-item" href="../../../../../userguide/latest/executionrepublisher/about.html">Execution Republisher</a>
<a class="navbar-item" href="../../../../../userguide/latest/excel/about.html">Excel</a>
<a class="navbar-item" href="../../../../../userguide/latest/flyway/about.html">Flyway</a>
<a class="navbar-item" href="../../../../../userguide/latest/layoutloaders/about.html">Layout Loaders</a>
<a class="navbar-item" href="../../../../../userguide/latest/titlecache/about.html">Title Cache</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Security</span>
<a class="navbar-item" href="../../../../../security/latest/secman/about.html">Secman</a>
<a class="navbar-item" href="../../../../../security/latest/audittrail/about.html">Audit Trail</a>
<a class="navbar-item" href="../../../../../security/latest/spring-oauth2/about.html">Spring OAuth2 Integration</a>
<a class="navbar-item" href="../../../../../security/latest/sessionlog/about.html">Session Log</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Web UI (Wicket)</span>
<a class="navbar-item" href="../../../../../vw/latest/fullcalendar/about.html">Full Calendar</a>
<a class="navbar-item" href="../../../../../vw/latest/pdfjs/about.html">pdf.js</a>
<a class="navbar-item" href="../../../../../vw/latest/sse/about.html">Server Side Events</a>
<a class="navbar-item" href="../../../../../vw/latest/tabular/about.html">Tabular Download</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">REST API (Restful Objects)</span>
<a class="navbar-item" href="../../../../../vro/latest/cors/about.html">CORS</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Persistence</span>
<a class="navbar-item" href="../../../../../querydsl/latest/about.html">QueryDSL</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Support</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Contact</span>
<a class="navbar-item" href="../../../../../docs/latest/support/slack-channel.html">Slack</a>
<a class="navbar-item" href="../../../../../docs/latest/support/mailing-list.html">Mailing Lists</a>
<a class="navbar-item" href="https://issues.apache.org/jira/browse/CAUSEWAY">JIRA</a>
<a class="navbar-item" href="https://stackoverflow.com/questions/tagged/causeway">Stack Overflow</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Releases</span>
<a class="navbar-item" href="../../../../../docs/latest/downloads/how-to.html">Downloads</a>
<a class="navbar-item" href="../../../../../relnotes/latest/about.html">Release Notes</a>
<hr class="navbar-divider"/>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Framework</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Process</span>
<a class="navbar-item" href="../../../../../comguide/latest/about.html">Committers' Guide</a>
<a class="navbar-item" href="../../../../../tooling/latest/about.html">Tooling</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Automated Analysis</span>
<a class="navbar-item" href="https://sonarcloud.io/dashboard?id=apache_causeway">SonarCloud.io</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Interim Builds</span>
<a class="navbar-item" href="../../../../../comguide/latest/nightly-builds.html">Nightly builds</a>
<a class="navbar-item" href="../../../../../comguide/latest/weekly-builds.html">Weekly builds</a>
<a class="navbar-item" href="https://apache-causeway-committers.github.io/causeway-nightly">Website Preview (not ASF hosted)</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Development</span>
<a class="navbar-item" href="../../../../../core/latest/about.html">Internal Design Docs</a>
<a class="navbar-item" href="../../../../../regressiontests/latest/about.html">Regression Tests</a>
<a class="navbar-item" href="../../../../../incubator/latest/about.html">Incubator</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Thanks</span>
<a class="navbar-item" href="../../../../../more-thanks/latest/more-thanks.html">Acknowledgements</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">ASF</a>
<div class="navbar-dropdown">
<a class="navbar-item" href="http://www.apache.org/">Apache Homepage</a>
<a class="navbar-item" href="https://www.apache.org/events/current-event">Events</a>
<a class="navbar-item" href="https://www.apache.org/licenses/">License</a>
<a class="navbar-item" href="https://www.apache.org/security/">Security</a>
<a class="navbar-item" href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a>
<a class="navbar-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
<a class="navbar-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
<hr class="navbar-divider"/>
<a class="navbar-item" href="https://whimsy.apache.org/board/minutes/Causeway.html">PMC board minutes</a>
</div>
</div>
<a class="navbar-item" href="../../../../../docs/latest/about.html">
<span class="icon">
<img src="../../../../../_/img/home.png"></img>
</span>
</a>
</div>
</div>
</nav>
</header>
<div class="body ">
<div class="nav-container" data-component="refguide" data-version="3.5.0">
<aside class="nav">
<div class="panels">
<div class="nav-panel-search hide-for-print">
<input id="algolia-search-input" placeholder="Search"></span>
</div>
<div class="nav-panel-pagination">
<a class="page-previous disabled" rel="prev" href="" title=""><span></span></a>
<a class="page-next disabled" rel="next"
href="" title=""><span></span></a>
<!--
page.parent doesn't seem to be set...
<a class="page-parent disabled" rel="prev" href="" title=""><span></span></a>
-->
</div>
<div class="nav-panel-menu is-active" data-panel="menu">
<nav class="nav-menu">
<h3 class="title"><a href="../../../about.html">Reference Guide</a></h3>
<ul class="nav-list">
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../latest/applib-svc/about.html">Domain Services</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/acceptheader/AcceptHeaderService.html">AcceptHeaderService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/appfeatui/ApplicationFeatureMenu.html">ApplicationFeatureMenu</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/appfeat/ApplicationFeatureRepository.html">ApplicationFeatureRepository</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/bookmark/BookmarkService.html">BookmarkService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/bookmarkui/BookmarkUiService.html">BookmarkUiService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/clock/ClockService.html">ClockService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/commanddto/processor/spi/CommandDtoProcessorService.html">CommandDtoProcessorService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/command/CommandExecutorService.html">CommandExecutorService</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../latest/applib/index/services/publishing/spi/CommandSubscriber.html">CommandSubscriber</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib/index/services/publishing/log/CommandLogger.html">CommandLogger</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/confview/ConfigurationMenu.html">ConfigurationMenu</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/confview/ConfigurationViewService.html">ConfigurationViewService</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../latest/applib/index/services/conmap/ContentMappingService.html">ContentMappingService</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib/index/services/commanddto/conmap/ContentMappingServiceForCommandDto.html">ContentMappingServiceForCommandDto</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib/index/services/commanddto/conmap/ContentMappingServiceForCommandsDto.html">ContentMappingServiceForCommandsDto</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/linking/DeepLinkService.html">DeepLinkService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/userreg/EmailNotificationService.html">EmailNotificationService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/email/EmailService.html">EmailService</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../latest/applib/index/services/publishing/spi/EntityChangesSubscriber.html">EntityChangesSubscriber</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib/index/services/publishing/log/EntityChangesLogger.html">EntityChangesLogger</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../latest/applib/index/services/publishing/spi/EntityPropertyChangeSubscriber.html">EntityPropertyChangeSubscriber</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib/index/services/publishing/log/EntityPropertyChangeLogger.html">EntityPropertyChangeLogger</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../latest/applib/index/services/publishing/spi/ExecutionSubscriber.html">ExecutionSubscriber</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib/index/services/publishing/log/ExecutionLogger.html">ExecutionLogger</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/error/ErrorReportingService.html">ErrorReportingService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/eventbus/EventBusService.html">EventBusService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/exceprecog/ExceptionRecognizerService.html">ExceptionRecognizerService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/factory/FactoryService.html">FactoryService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="#refguide:applib:index/services/grid/GridLoaderService.adoc">GridLoaderService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/grid/GridService.html">GridService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="#refguide:applib:index/services/grid/GridSystemService.adoc">GridSystemService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/health/HealthCheckService.html">HealthCheckService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/hint/HintIdProvider.html">HintIdProvider</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/hint/HintStore.html">HintStore</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/homepage/HomePageResolverService.html">HomePageResolverService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/bookmark/IdStringifier.html">IdStringifier</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/user/ImpersonateMenu.html">ImpersonateMenu</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/user/ImpersonateMenuAdvisor.html">ImpersonateMenuAdvisor</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/iactn/InteractionProvider.html">InteractionProvider</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="#refguide:applib:index/services/iactnlayer/InteractionLayerTracker.adoc">InteractionLayerTracker</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="#refguide:applib:index/services/iactnlayer/InteractionService.adoc">InteractionService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/jaxb/JaxbService.html">JaxbService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/layout/LayoutService.html">LayoutService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/layout/LayoutServiceMenu.html">LayoutServiceMenu</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/i18n/LanguageProvider.html">LanguageProvider</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/locale/LocaleChoiceProvider.html">LocaleChoiceProvider</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/menu/MenuBarsLoaderService.html">MenuBarsLoaderService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/menu/MenuBarsService.html">MenuBarsService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/message/MessageService.html">MessageService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/metamodel/MetaModelService.html">MetaModelService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/metamodel/MetaModelServiceMenu.html">MetaModelServiceMenu</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/metrics/MetricsService.html">MetricsService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/queryresultscache/QueryResultsCache.html">QueryResultsCache</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/repository/RepositoryService.html">RepositoryService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/routing/RoutingService.html">RoutingService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/scratchpad/Scratchpad.html">Scratchpad</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/inject/ServiceInjector.html">ServiceInjector</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/registry/ServiceRegistry.html">ServiceRegistry</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/session/SessionSubscriber.html">SessionSubscriber</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/sitemap/SitemapService.html">SitemapService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/sitemap/SitemapServiceMenu.html">SitemapServiceMenu</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/sudo/SudoService.html">SudoService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/swagger/SwaggerService.html">SwaggerService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/tablecol/TableColumnOrderService.html">TableColumnOrderService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/tablecol/TableColumnVisibilityService.html">TableColumnVisibilityService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/title/TitleService.html">TitleService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/i18n/TranslationService.html">TranslationService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/i18n/TranslationsResolver.html">TranslationsResolver</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/xactn/TransactionalProcessor.html">TransactionProcessor</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/xactn/TransactionService.html">TransactionService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/urlencoding/UrlEncodingService.html">UrlEncodingService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/userui/UserMenu.html">UserMenu</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/userreg/UserRegistrationService.html">UserRegistrationService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/user/UserService.html">UserService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/wrapper/WrapperFactory.html">WrapperFactory</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/xml/XmlService.html">XmlService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/services/xmlsnapshot/XmlSnapshotService.html">XmlSnapshotService</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Core Transaction</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/core/index/transaction/changetracking/EntityChangeTracker.html">EntityChangeTracker</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/core/index/transaction/changetracking/EntityChangesPublisher.html">EntityChangesPublisher</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Viewer Common Applib</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/viewer/index/commons/applib/services/userprof/UserProfileUiService.html">UserProfileUiService</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Persistence JPA Applib</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/persistence/index/jpa/applib/services/JpaSupportService.html">JpaSupportService</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Persistence QueryDsl Applib</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/persistence/index/querydsl/applib/services/auto/AutoCompleteGeneratedQueryService.html">AutoCompleteGeneratedQueryService</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/persistence/index/querydsl/applib/services/repo/QueryDslRepository.html">QueryDslRepository</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/persistence/index/querydsl/applib/services/support/DetachedQueryFactory.html">DetachedQueryFactory</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/persistence/index/querydsl/applib/services/support/QueryDslSupport.html">QueryDslSupport</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../latest/applib-ant/about.html">Annotations</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/annotation/Action.html">@Action</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/annotation/ActionLayout.html">@ActionLayout</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/annotation/Collection.html">@Collection</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/annotation/CollectionLayout.html">@CollectionLayout</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/annotation/DomainObject.html">@DomainObject</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/annotation/DomainObjectLayout.html">@DomainObjectLayout</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/annotation/DomainService.html">@DomainService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/annotation/DomainServiceLayout.html">@DomainServiceLayout</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/annotation/Parameter.html">@Parameter</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/annotation/ParameterLayout.html">@ParameterLayout</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/annotation/Property.html">@Property</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib/index/annotation/PropertyLayout.html">@PropertyLayout</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Other Causeway Annotations</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib/index/annotation/HomePage.html">@HomePage</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib/index/annotation/Title.html">@Title</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib/index/annotation/MinLength.html">@MinLength</a>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">include/exclude</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../../../latest/applib/index/annotation/Domain_Include.html">@Domain.Include</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../../../latest/applib/index/annotation/Domain_Exclude.html">@Domain.Exclude</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../../../latest/applib/index/annotation/MemberSupport.html">@MemberSupport</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../../../latest/applib/index/annotation/ObjectSupport.html">@ObjectSupport</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../../../latest/applib/index/annotation/ObjectLifecycle.html">@ObjectLifecycle</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../../../latest/applib/index/annotation/Programmatic.html">@Programmatic</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">architecture</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../../../latest/applib/index/annotation/Module.html">@Module</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../../../latest/applib/index/annotation/InteractionScope.html">@InteractionScope</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">custom value type support</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../../../latest/applib/index/annotation/Value.html">@Value</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../../../latest/applib/index/annotation/ValueSemantics.html">@ValueSemantics</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Java EE Annotations</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib-ant/Digits.html">@Digits</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib-ant/Nullable.html">@Nullable</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib-ant/Pattern.html">@Pattern</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">JAXB</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib-ant/XmlJavaTypeAdapter.html">@XmlJavaTypeAdapter</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib-ant/XmlRootElement.html">@XmlRootElement</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">JPA</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib-ant/Entity.html">@Entity</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib-ant/Table.html">@Table</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib-ant/Transient.html">@Transient</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib-ant/Column.html">@Column</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../latest/applib-methods/about.html">Methods</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib-methods/prefixes.html">Supporting Methods</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib-methods/ui-hints.html">UI Hint Methods</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/applib-methods/lifecycle.html">Lifecycle Methods</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../applib-classes/about.html">Classes</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../applib-classes/events.html">Events</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../applib-classes/non-persisted-objects.html">Non-persisted objects</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../ViewModel.html">ViewModel</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../applib-classes/layout.html">Layout</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../applib-classes/value-types.html">Value Types</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../value/Blob.html">Blob</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../value/Clob.html">Clob</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../value/Markup.html">Markup</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../value/LocalResourcePath.html">LocalResourcePath</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../value/Password.html">Password</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../applib-classes/utility.html">Utility Classes</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../util/Enums.html">Enums</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../util/ObjectContracts.html">ObjectContracts</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../util/Reasons.html">Reasons</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../util/ReasonBuffer.html">ReasonBuffer</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../util/ReasonBuffer2.html">ReasonBuffer2</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../util/TitleBuffer.html">TitleBuffer</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../applib-classes/mixees-and-mixins.html">Mixees and Mixins</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../mixins/layout/Object_downloadLayout.html">Object_downloadLayout</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib/index/mixins/metamodel/Object_downloadMetamodelXml.html">Object_downloadMetamodelXml</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../mixins/metamodel/Object_rebuildMetamodel.html">Object_rebuildMetamodel</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib/index/mixins/metamodel/Object_logicalTypeName.html">Object_logicalTypeName</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib/index/mixins/metamodel/Object_objectIdentifier.html">Object_objectIdentifier</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../viewer/index/wicket/applib/mixins/Object_clearHints.html">Object_clearHints</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../mixins/rest/Object_openRestApi.html">Object_openRestApi</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib/index/mixins/dto/Dto_downloadXml.html">Dto_downloadXml</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib/index/mixins/dto/Dto_downloadXsd.html">Dto_downloadXsd</a>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">Command Log</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../../../latest/extensions/index/commandlog/applib/contributions/Object_recentCommands.html">Object_recentCommands</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../../../latest/extensions/index/commandlog/applib/contributions/HasInteractionId_commandLogEntry.html">HasInteraction_commandLogEntry</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../../../latest/extensions/index/commandlog/applib/contributions/HasUsername_recentCommandsByUser.html">HasUsername_recentCommandsByUser</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">Execution Log</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../../../latest/extensions/index/executionlog/applib/contributions/Object_recentExecutions.html">Object_recentExecutions</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../../../../latest/extensions/index/executionlog/applib/contributions/HasInteractionId_executionLogEntries.html">HasInteractionId_executionLogEntries</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../latest/applib/index/mixins/system/HasTarget_openTargetObject.html">HasTarget_openTargetObject</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../applib-classes/spec.html">Specification pattern</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../latest/config/about.html">Configuration</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.applib.html">Applib</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.core.config.html">Core Configuration</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.core.meta-model.html">Core MetaModel</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.core.meta-model.introspector.html">Core MetaModel Introspection</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.core.meta-model.validator.html">Core MetaModel Validator</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.core.runtime.html">Core Runtime</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.core.runtime-services.html">Core Runtime Services</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.persistence.schema.html">Core Persistence Schema</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.persistence.commons.html">Core Persistence Commons</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.prototyping.html">Prototyping</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.security.keycloak.html">Keycloak Security Implementation</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.security.spring.html">Spring Security Implementation</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.viewer.common.html">Common Config for Viewers</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.viewer.graphql.html">GraphQL API</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.viewer.restfulobjects.html">REST API (Restful Objects Viewer)</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.viewer.wicket.html">Wicket Viewer</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/eclipselink.html">Eclipselink Configuration</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.extensions.html">Extensions</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.value-types.html">Value types</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/causeway.testing.html">Testing</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/config/sections/Other.html">Other</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../latest/schema/about.html">Schema</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/schema/mml.html">MetaModel</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/schema/cmd.html">Command</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/schema/ixn.html">Interaction</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/schema/chg.html">Changes</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../latest/schema/common.html">Common</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
<div class="context">
<span class="title">Reference Guide</span>
<span class="version">3.5.0</span>
</div>
<ul class="components">
<li class="component">
<span class="title"> </span>
<ul class="versions">
<li class="version">
<a href="../../../../../docs/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../docs/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../docs/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../docs/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../docs/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../docs/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../docs/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../docs/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../docs/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../docs/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../docs/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Committers' Guide</span>
<ul class="versions">
<li class="version">
<a href="../../../../../comguide/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../comguide/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../comguide/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../comguide/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../comguide/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../comguide/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../comguide/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../comguide/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../comguide/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../comguide/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../comguide/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Contributors' Guide</span>
<ul class="versions">
<li class="version">
<a href="../../../../../conguide/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../conguide/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../conguide/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../conguide/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../conguide/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../conguide/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../conguide/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../conguide/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../conguide/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../conguide/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../conguide/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Design Docs</span>
<ul class="versions">
<li class="version">
<a href="../../../../../core/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../core/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../core/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../core/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../core/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../core/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../core/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../core/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../core/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../core/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../core/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Extensions</span>
<ul class="versions">
<li class="version">
<a href="../../../../../extensions/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../extensions/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../extensions/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../extensions/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../extensions/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../extensions/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../extensions/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../extensions/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../extensions/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../extensions/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../extensions/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">GraphQL Viewer</span>
<ul class="versions">
<li class="version">
<a href="../../../../../gqlv/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../gqlv/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../gqlv/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../gqlv/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../gqlv/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../gqlv/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../gqlv/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../gqlv/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../gqlv/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../gqlv/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../gqlv/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Incubator Catalog</span>
<ul class="versions">
<li class="version">
<a href="../../../../../incubator/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../incubator/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../incubator/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../incubator/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../incubator/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../incubator/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../incubator/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../incubator/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../incubator/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../incubator/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../incubator/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">JDO/DataNucleus</span>
<ul class="versions">
<li class="version">
<a href="../../../../../pjdo/latest/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../pjdo/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../pjdo/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../pjdo/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../pjdo/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../pjdo/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../pjdo/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../pjdo/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../pjdo/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">JPA</span>
<ul class="versions">
<li class="version">
<a href="../../../../../pjpa/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../pjpa/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../pjpa/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../pjpa/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../pjpa/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../pjpa/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../pjpa/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../pjpa/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../pjpa/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../pjpa/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../pjpa/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">QueryDSL</span>
<ul class="versions">
<li class="version">
<a href="../../../../../querydsl/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../querydsl/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../querydsl/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../querydsl/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../querydsl/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../querydsl/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../querydsl/3.2.0/about.html">3.2.0</a>
</li>
</ul>
</li>
<li class="component is-current">
<span class="title">Reference Guide</span>
<ul class="versions">
<li class="version">
<a href="../../../../latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../3.6.0/about.html">3.6.0</a>
</li>
<li class="version is-current">
<a href="../../../about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">regressiontests</span>
<ul class="versions">
<li class="version">
<a href="../../../../../regressiontests/latest/index.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../regressiontests/4.0.0-M1/index.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../regressiontests/3.6.0/index.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../regressiontests/3.5.0/index.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../regressiontests/3.4.0/index.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../regressiontests/3.3.0/index.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../regressiontests/3.2.0/index.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../regressiontests/3.1.0/index.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../regressiontests/3.0.0/index.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../regressiontests/2.1.0/index.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../regressiontests/2.0.0/index.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Release Notes</span>
<ul class="versions">
<li class="version">
<a href="../../../../../relnotes/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../relnotes/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../relnotes/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../relnotes/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../relnotes/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../relnotes/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../relnotes/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../relnotes/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../relnotes/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../relnotes/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../relnotes/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">REST API (Restful Objects Viewer)</span>
<ul class="versions">
<li class="version">
<a href="../../../../../vro/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../vro/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../vro/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../vro/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../vro/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../vro/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../vro/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../vro/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../vro/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../vro/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../vro/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Security Guide</span>
<ul class="versions">
<li class="version">
<a href="../../../../../security/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../security/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../security/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../security/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../security/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../security/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../security/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../security/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../security/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../security/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../security/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Setup Guide</span>
<ul class="versions">
<li class="version">
<a href="../../../../../setupguide/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../setupguide/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../setupguide/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../setupguide/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../setupguide/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../setupguide/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../setupguide/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../setupguide/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../setupguide/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../setupguide/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../setupguide/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Testing Guide</span>
<ul class="versions">
<li class="version">
<a href="../../../../../testing/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../testing/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../testing/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../testing/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../testing/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../testing/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../testing/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../testing/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../testing/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../testing/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../testing/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Tutorials</span>
<ul class="versions">
<li class="version">
<a href="../../../../../tutorials/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../tutorials/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../tutorials/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../tutorials/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../tutorials/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../tutorials/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../tutorials/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../tutorials/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../tutorials/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../tutorials/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../tutorials/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">User Guide</span>
<ul class="versions">
<li class="version">
<a href="../../../../../userguide/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../userguide/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../userguide/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../userguide/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../userguide/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../userguide/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../userguide/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../userguide/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../userguide/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../userguide/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../userguide/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Value Types Catalog</span>
<ul class="versions">
<li class="version">
<a href="../../../../../valuetypes/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../valuetypes/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../valuetypes/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../valuetypes/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../valuetypes/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../valuetypes/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../valuetypes/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../valuetypes/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../valuetypes/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../valuetypes/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../valuetypes/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Web UI (Wicket Viewer)</span>
<ul class="versions">
<li class="version">
<a href="../../../../../vw/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../../../../vw/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../../../../vw/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../../../../vw/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../../../../vw/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../../../../vw/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../../../../vw/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../../../../vw/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../../../../vw/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../../../../vw/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../../../../vw/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</aside>
</div>
<main role="main">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
<a href="../../../../../docs/latest/about.html" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
<ul>
<li><a href="../../../about.html">Reference Guide</a></li>
<li><a href="ActionLayout.html">@ActionLayout</a></li>
</ul>
</nav>
<div class="page-versions">
<button class="version-menu-toggle" title="Show other versions of page">3.5.0</button>
<div class="version-menu">
<a class="version" href="../../../../latest/applib/index/annotation/ActionLayout.html">4.0.0-M2</a>
<a class="version" href="../../../../4.0.0-M1/applib/index/annotation/ActionLayout.html">4.0.0-M1</a>
<a class="version" href="../../../../3.6.0/applib/index/annotation/ActionLayout.html">3.6.0</a>
<a class="version is-current" href="ActionLayout.html">3.5.0</a>
<a class="version" href="../../../../3.4.0/applib/index/annotation/ActionLayout.html">3.4.0</a>
<a class="version" href="../../../../3.3.0/applib/index/annotation/ActionLayout.html">3.3.0</a>
<a class="version" href="../../../../3.2.0/applib/index/annotation/ActionLayout.html">3.2.0</a>
<a class="version" href="../../../../3.1.0/applib/index/annotation/ActionLayout.html">3.1.0</a>
<a class="version" href="../../../../3.0.0/applib/index/annotation/ActionLayout.html">3.0.0</a>
<a class="version" href="../../../../2.1.0/applib/index/annotation/ActionLayout.html">2.1.0</a>
<a class="version" href="../../../../2.0.0/applib/index/annotation/ActionLayout.html">2.0.0</a>
</div>
</div>
<div class="edit-this-page"><a href="https://github.com/apache/causeway/edit/3.5.0/antora/components/refguide-index/modules/applib/pages/index/annotation/ActionLayout.adoc">Edit</a></div>
</div>
<article class="doc">
<a name="section-top"></a>
<h1 class="page">@ActionLayout</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Layout hints for actions.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="api"><a class="anchor" href="#api"></a>API</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="title">ActionLayout.java</div>
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">@interface ActionLayout {
String associateWith() default ""; <i class="conum" data-value="1"></i><b>(1)</b>
String cssClass() default ""; <i class="conum" data-value="2"></i><b>(2)</b>
String cssClassFa() default ""; <i class="conum" data-value="3"></i><b>(3)</b>
CssClassFaPosition cssClassFaPosition() default CssClassFaPosition.LEFT; <i class="conum" data-value="4"></i><b>(4)</b>
String describedAs() default ""; <i class="conum" data-value="5"></i><b>(5)</b>
String fieldSetId() default "__infer"; <i class="conum" data-value="6"></i><b>(6)</b>
String fieldSetName() default "__infer"; <i class="conum" data-value="7"></i><b>(7)</b>
Where hidden() default Where.NOT_SPECIFIED; <i class="conum" data-value="8"></i><b>(8)</b>
String named() default ""; <i class="conum" data-value="9"></i><b>(9)</b>
Position position() default Position.NOT_SPECIFIED; <i class="conum" data-value="10"></i><b>(10)</b>
PromptStyle promptStyle() default PromptStyle.AS_CONFIGURED; <i class="conum" data-value="11"></i><b>(11)</b>
String sequence() default ""; <i class="conum" data-value="12"></i><b>(12)</b>
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td><a href="#associateWith">associateWith</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Associates this action with a property or collection, specifying its id.</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td><a href="#cssClass">cssClass</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Indicates the css class that an action should have.</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td><a href="#cssClassFa">cssClassFa</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Indicates theFont AwesomeCSS class to decorate an action (button or menu item).</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
<td><a href="#cssClassFaPosition">cssClassFaPosition</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Indicates the position of theFont Awesomeicon.</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="5"></i><b>5</b></td>
<td><a href="#describedAs">describedAs</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Description of this action, eg to be rendered in a tooltip.</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="6"></i><b>6</b></td>
<td><a href="#fieldSetId">fieldSetId</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Specifies the <strong>id</strong> of associated <em>FieldSet</em> .To associate an <em>Action</em> with a <em>Collection</em> , use <em>Action#choicesFrom()</em> instead.</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="7"></i><b>7</b></td>
<td><a href="#fieldSetName">fieldSetName</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Specifies the <strong>friendly-name</strong> of associated <em>FieldSet</em> or <em>Collection</em> .To associate an <em>Action</em> with a <em>Collection</em> , use <em>Action#choicesFrom()</em> instead.</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="8"></i><b>8</b></td>
<td><a href="#hidden">hidden</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Indicates where in the UI the action should <em>not</em> not be visible.</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="9"></i><b>9</b></td>
<td><a href="#named">named</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Name of this action (overriding the name derived from its name in code).</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="10"></i><b>10</b></td>
<td><a href="#position">position</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>For actions that are associated with a property (using either <em>Action#choicesFrom()</em> or <em>ActionLayout#fieldSetId()</em> or <em>ActionLayout#fieldSetName()</em> , indicates the positioning of the action&#8217;s button relative to the property.</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="11"></i><b>11</b></td>
<td><a href="#promptStyle">promptStyle</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>How the parameters for this action are prompted, either <em>PromptStyle#DIALOG dialog</em> or <em>PromptStyle#INLINE inline</em> .</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="12"></i><b>12</b></td>
<td><a href="#sequence">sequence</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>The order of this member relative to other members in the same (layout) group, given in <em>Dewey-decimal</em> notation.</p>
</div>
</div>
</div></td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="members"><a class="anchor" href="#members"></a>Members</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="associateWith"><a class="anchor" href="#associateWith"></a>associateWith</h3>
<div class="paragraph">
<p>Associates this action with a property or collection, specifying its id.</p>
</div>
<div class="paragraph">
<p>To specify the layout order use <em>ActionLayout#sequence()</em> .</p>
</div>
<div class="paragraph">
<p>For example <code>@ActionLayout(associateWith="items") @ActionLayout(sequence="2.1")</code></p>
</div>
<div class="paragraph">
<p>Note that it is also possible to associate an action with a collection using <em>Action#choicesFrom()</em> (which has the additional semantic of the rows of the element being used as choices for that action&#8217;s collection parameter of the same type as the elements of the collection).</p>
</div>
</div>
<div class="sect2">
<h3 id="cssClass"><a class="anchor" href="#cssClass"></a>cssClass</h3>
<div class="paragraph">
<p>Indicates the css class that an action should have.</p>
</div>
<div class="paragraph">
<p>For the Wicket viewer, this can be a bootstrap class such as <code>btn-info</code> .</p>
</div>
</div>
<div class="sect2">
<h3 id="cssClassFa"><a class="anchor" href="#cssClassFa"></a>cssClassFa</h3>
<div class="paragraph">
<p>Indicates theFont AwesomeCSS class to decorate an action (button or menu item).</p>
</div>
</div>
<div class="sect2">
<h3 id="cssClassFaPosition"><a class="anchor" href="#cssClassFaPosition"></a>cssClassFaPosition</h3>
<div class="paragraph">
<p>Indicates the position of theFont Awesomeicon.</p>
</div>
<div class="paragraph">
<p>The icon could be rendered on the left or the right of the action button</p>
</div>
</div>
<div class="sect2">
<h3 id="describedAs"><a class="anchor" href="#describedAs"></a>describedAs</h3>
<div class="paragraph">
<p>Description of this action, eg to be rendered in a tooltip.</p>
</div>
</div>
<div class="sect2">
<h3 id="fieldSetId"><a class="anchor" href="#fieldSetId"></a>fieldSetId</h3>
<div class="paragraph">
<p>Specifies the <strong>id</strong> of associated <em>FieldSet</em> .To associate an <em>Action</em> with a <em>Collection</em> , use <em>Action#choicesFrom()</em> instead.</p>
</div>
<div class="paragraph">
<p>For a more in depth description see the analogous <em>PropertyLayout#fieldSetId()</em> .</p>
</div>
</div>
<div class="sect2">
<h3 id="fieldSetName"><a class="anchor" href="#fieldSetName"></a>fieldSetName</h3>
<div class="paragraph">
<p>Specifies the <strong>friendly-name</strong> of associated <em>FieldSet</em> or <em>Collection</em> .To associate an <em>Action</em> with a <em>Collection</em> , use <em>Action#choicesFrom()</em> instead.</p>
</div>
<div class="paragraph">
<p>For a more in depth description see the analogous <em>PropertyLayout#fieldSetId()</em> ;</p>
</div>
</div>
<div class="sect2">
<h3 id="hidden"><a class="anchor" href="#hidden"></a>hidden</h3>
<div class="paragraph">
<p>Indicates where in the UI the action should <em>not</em> not be visible.</p>
</div>
</div>
<div class="sect2">
<h3 id="named"><a class="anchor" href="#named"></a>named</h3>
<div class="paragraph">
<p>Name of this action (overriding the name derived from its name in code).</p>
</div>
<div class="paragraph">
<p>A typical use case is if the desired name is a reserved Java keyword, such as <code>default</code> or <code>package</code>.</p>
</div>
</div>
<div class="sect2">
<h3 id="position"><a class="anchor" href="#position"></a>position</h3>
<div class="paragraph">
<p>For actions that are associated with a property (using either <em>Action#choicesFrom()</em> or <em>ActionLayout#fieldSetId()</em> or <em>ActionLayout#fieldSetName()</em> , indicates the positioning of the action&#8217;s button relative to the property.</p>
</div>
<div class="paragraph">
<p>Ignored if the action has not been associated with a property.</p>
</div>
</div>
<div class="sect2">
<h3 id="promptStyle"><a class="anchor" href="#promptStyle"></a>promptStyle</h3>
<div class="paragraph">
<p>How the parameters for this action are prompted, either <em>PromptStyle#DIALOG dialog</em> or <em>PromptStyle#INLINE inline</em> .</p>
</div>
</div>
<div class="sect2">
<h3 id="sequence"><a class="anchor" href="#sequence"></a>sequence</h3>
<div class="paragraph">
<p>The order of this member relative to other members in the same (layout) group, given in <em>Dewey-decimal</em> notation.</p>
</div>
<div class="paragraph">
<p>An alternative is to use the <code>Xxx.layout.xml</code> file, where <code>Xxx</code> is the domain object name.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
<div class="sectionbody">
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public class ToDoItems {
@Action(semantics=SemanticsOf.SAFE) <i class="conum" data-value="1"></i><b>(1)</b>
@ActionLayout(
bookmarking=BookmarkPolicy.AS_ROOT,
cssClass="x-key",
cssClassFa="fa-checkbox",
describedAs="Mark the todo item as not complete after all",
hidden=Where.NOWHERE, <i class="conum" data-value="2"></i><b>(2)</b>
sequence = "1"
)
public List&lt;ToDoItem&gt; notYetComplete() {
...
}
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>required for bookmarkable actions</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>default value, so could be omitted</td>
</tr>
</table>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<i class="fa icon-tip" title="Tip"></i>
</td>
<td class="content">
<div class="paragraph">
<p>As an alternative to using the <code>@ActionLayout</code> annotation, a <a href="../../../../../userguide/latest/ui-layout-and-hints.html#object-layout" class="xref page">file-based layout</a> can be used (and is generally to be preferred since it is more flexible/powerful).</p>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="usage-notes"><a class="anchor" href="#usage-notes"></a>Usage Notes</h2>
<div class="sectionbody">
<div class="paragraph">
<p>As alternative to using the annotation, the dynamic <a href="../../../../../userguide/latest/ui-layout-and-hints.html#object-layout" class="xref page">file-based layout</a> can generally be used instead.</p>
</div>
<div class="sect2">
<h3 id="prompt-style"><a class="anchor" href="#prompt-style"></a>Prompt Style</h3>
<div class="paragraph">
<p>The <a href="../../../../latest/applib/index/annotation/ActionLayout.html#promptStyle" class="xref page">promptStyle()</a> element is used to specify whether, when invoking an action associated with a domain object property, the parameters for the action are prompted either in modal dialog box, a (non-modal) sidebar dialog box, or is prompted using an inline panel (replacing the property on the page).
For more on sidebar vs modal dialogs, see <a href="../../../../../vw/latest/features.html#sidebar-vs-modal-dialogs" class="xref page">Wicket viewer features</a>.</p>
</div>
<div class="paragraph">
<p>The prompt style is influenced by two <a href="../../../../../vw/latest/setup-and-configuration.html" class="xref page">configuration properties</a>:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>if the <a href="../../../../latest/applib/index/annotation/ActionLayout.html#promptStyle" class="xref page">promptStyle()</a> element is set to <code>DIALOG</code>, then a configuration property is used to determine whether to render using a modal dialog or a sidebar:</p>
<div class="ulist">
<ul>
<li>
<p><a href="../../../../latest/config/sections/causeway.viewer.wicket.html#causeway.viewer.wicket.dialog-mode" class="xref page">causeway.viewer.wicket.dialog-mode</a> if the action is for a domain object (entity or view model)</p>
<div class="paragraph">
<p>If the configuration property is not set, then sidebar is used.</p>
</div>
</li>
<li>
<p><a href="../../../../latest/config/sections/causeway.viewer.wicket.html#causeway.viewer.wicket.dialog-mode-for-menu" class="xref page">causeway.viewer.wicket.dialog-mode-for-menu</a> if the action is for a domain service</p>
<div class="paragraph">
<p>If the configuration property is not set, then modal is used.</p>
</div>
</li>
</ul>
</div>
</li>
<li>
<p>if the attribute is not set at all, then the<a href="../../../../latest/config/sections/causeway.viewer.wicket.html#causeway.viewer.wicket.prompt-style" class="xref page">causeway.viewer.wicket.prompt-style</a> configuration property is used to specify the preferred prompt style.</p>
<div class="paragraph">
<p>If the configuration property is not set, then an inline prompt is used.</p>
</div>
<div class="paragraph">
<p>And, if this <em>is</em> set but is set to just <code>DIALOG</code>, then the <a href="../../../../latest/config/sections/causeway.viewer.wicket.html#causeway.viewer.wicket.dialog-mode" class="xref page">causeway.viewer.wicket.dialog-mode</a> configuration property determines which style.</p>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">import lombok.Getter;
import lombok.Setter;
public class Customer {
@Property(editing = Editing.DISABLED) <i class="conum" data-value="1"></i><b>(1)</b>
@Getter @Setter
private String notes;
@Action(associateWith="notes") <i class="conum" data-value="2"></i><b>(2)</b>
@ActionLayout(
promptStyle=PromptStyle.INLINE <i class="conum" data-value="3"></i><b>(3)</b>
)
public Customer updateNotes(String notes) {
// ...
}
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>property is not editable</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>instead, associate this action with the "notes" property</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>prompt for the action&#8217;s parameters using an inline panel.</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Exactly one action for a given property can be specified with <code>INLINE_AS_IF_EDIT</code>.
Assuming that the corresponding property is not itself editable, this means that the property will be rendered as if it is editable, but the action&#8217;s prompt form will be rendered instead.
The net effect is that a property conceptually consisting of different parts (eg a name, an address or a date) can be updated using an action that lets each separate part be specified independently.</p>
</div>
</div>
<div class="sect2">
<h3 id="positioning"><a class="anchor" href="#positioning"></a>Positioning</h3>
<div class="paragraph">
<p>The <a href="../../../../latest/applib/index/annotation/ActionLayout.html#position" class="xref page">position()</a> element pertains only to actions that have been associated with properties using <a href="../../../../latest/applib/index/annotation/ActionLayout.html#associateWith" class="xref page">@Action#associateWith()</a>.
For these actions, it specifies the positioning of the action&#8217;s button with respect to the field representing the object property.</p>
</div>
<div class="paragraph">
<p>The attribute can take one of four values: <code>BELOW</code>, <code>RIGHT</code>, <code>PANEL</code> or <code>PANEL_DROPDOWN</code>.</p>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">import lombok.Getter;
import lombok.Setter;
public class Customer {
@Property( editing=Editing.DISABLED )
@Getter @Setter
private BigDecimal cost;
@Property( editing=Editing.DISABLED )
@Getter @Setter
private String location;
@Action( associateWith="cost" ) <i class="conum" data-value="1"></i><b>(1)</b>
@ActionLayout(
named="Update", <i class="conum" data-value="2"></i><b>(2)</b>
position=Position.BELOW <i class="conum" data-value="3"></i><b>(3)</b>
)
public Customer updateCost(BigDecimal cost ) {
// ...
}
@Action( associateWith="location" )
@ActionLayout(
named="Update",
position=Position.BELOW
)
public Customer updateLocation(String latitude, String longitude) {
// ...
}
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>associate the "updateCost" action with the "cost" property</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>give the action an abbreviated name, because the fact that the "cost" property is to be updated is implied by its positioning</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>positioning of the action&#8217;s button</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>The default is <code>BELOW</code>.</p>
</div>
<div class="paragraph">
<p>If the action is positioned as <code>RIGHT</code>, then the action&#8217;s button is rendered to the right of the property&#8217;s field, in a compact drop-down.</p>
</div>
<div class="paragraph">
<p>If the action is positioned as <code>PANEL</code>, then the action&#8217;s button is rendered on the header of the panel that contains the property.</p>
</div>
<div class="paragraph">
<p>And finally, if the action is positioned as <code>PANEL_DROPDOWN</code>, then the action&#8217;s button is again rendered on the panel header.</p>
</div>
<div class="paragraph">
<p>If there are multiple actions associated with a single property then the positioning can be mix&#8217;ed-and-match&#8217;ed as required.
If the <code>PANEL</code> or <code>PANEL_DROPDOWN</code> are used, then (as the screenshots above show) the actions from potentially multiple properties grouped by that panel will be shown together.</p>
</div>
</div>
<div class="sect2">
<h3 id="descriptions"><a class="anchor" href="#descriptions"></a>Descriptions</h3>
<div class="paragraph">
<p>The <a href="../../../../latest/applib/index/annotation/ActionLayout.html#describedAs" class="xref page">describedAs()</a> attribute is used to provide a short description of the action to the user.
In the <a href="../../../../../vw/latest/about.html" class="xref page">Web UI (Wicket viewer)</a> it is displayed as a 'tool tip'.</p>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public class Customer {
@ActionLayout(describedAs=
"Place a repeat order of the last (most recently placed) order")
public Order placeRepeatOrder(...) { /* ... */ }
}</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="css-styling"><a class="anchor" href="#css-styling"></a>CSS Styling</h3>
<div class="paragraph">
<p>The <a href="../../../../latest/applib/index/annotation/ActionLayout.html#cssClass" class="xref page">cssClass()</a> element can be used to render additional CSS classes in the HTML (a wrapping <code>&lt;div&gt;</code>) that represents the action.
<a href="../../../../latest/config/application-specific/application-css.html" class="xref page">Application-specific CSS</a> can then be used to target and adjust the UI representation of that particular element.</p>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public class ToDoItem {
@ActionLayout(cssClass="x-key")
public ToDoItem postpone(LocalDate until) { /* ... */ }
...
}</code></pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>The similar <a href="../../../../latest/applib/index/annotation/ActionLayout.html#cssClassFa" class="xref page">@ActionLayout#cssClassFa</a> annotation attribute is also used as a hint to apply CSS, specifically to add <a href="http://fortawesome.github.io/Font-Awesome/icons/">Font Awesome icons</a> on action menu items or buttons.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="font-icons"><a class="anchor" href="#font-icons"></a>Font Icons</h3>
<div class="paragraph">
<p>The <a href="../../../../latest/applib/index/annotation/ActionLayout.html#cssClassFa" class="xref page">cssClassFa()</a> element is used to specify the name of a <a href="http://fortawesome.github.io/Font-Awesome/icons/">Font Awesome icon</a> name, to be rendered on the action&#8217;s representation as a button or menu item.
The related <a href="../../../../latest/applib/index/annotation/ActionLayout.html#cssClassFaPosition" class="xref page">cssClassFaPosition()</a> element specifies the positioning of the icon, to the left or the right of the text.</p>
</div>
<div class="paragraph">
<p>These attributes can also be applied to <a href="../../../../latest/applib/index/annotation/DomainObjectLayout.html#cssClassFa" class="xref page">domain objects</a> to specify the object&#8217;s icon.</p>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public class ToDoItem {
@ActionLayout(
cssClassFa="fa-step-backward"
)
public ToDoItem previous() {
// ...
}
@ActionLayout(
cssClassFa="fa-step-forward",
cssClassFaPosition=ActionLayout.CssClassFaPosition.RIGHT
)
public ToDoItem next() {
// ...
}
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>There can be multiple "fa-" classes, eg to mirror or rotate the icon.
There is no need to include the mandatory <code>fa</code> "marker" CSS class; it will be automatically added to the list.
The <code>fa-</code> prefix can also be omitted from the class names; it will be prepended to each if required.</p>
</div>
</div>
<div class="sect2">
<h3 id="bookmarking"><a class="anchor" href="#bookmarking"></a>Bookmarking</h3>
<div class="paragraph">
<p>The <a href="../../../../latest/applib/index/annotation/ActionLayout.html#bookmarking" class="xref page">bookmarking()</a> element indicates if an action (with safe <a href="../../../../latest/applib/index/annotation/Action.html#semantics" class="xref page">action semantics</a>) is automatically bookmarked.</p>
</div>
<div class="paragraph">
<p>In the <a href="../../../../../vw/latest/about.html" class="xref page">Web UI (Wicket viewer)</a>, a link to a bookmarked object is shown in the bookmarks panel.</p>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<i class="fa icon-tip" title="Tip"></i>
</td>
<td class="content">
<div class="paragraph">
<p>The <a href="../../../../../vw/latest/about.html" class="xref page">Web UI (Wicket viewer)</a> supports <code>alt-[</code> as a shortcut for opening the bookmark panel. <code>Esc</code> will close.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public class ToDoItems {
@Action(semantics=SemanticsOf.SAFE)
@ActionLayout(
bookmarking=BookmarkPolicy.AS_ROOT,
sequence = "1")
public List&lt;ToDoItem&gt; notYetComplete() {
...
}
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>indicates that the <code>notYetComplete()</code> action is bookmarkable.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>The enum value <code>AS_CHILD</code> has no meaning for actions; it relates only to bookmarked <a href="../../../../latest/applib/index/annotation/DomainObjectLayout.html#bookmarking" class="xref page">domain object</a>s.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="hiding-actions"><a class="anchor" href="#hiding-actions"></a>Hiding actions</h3>
<div class="paragraph">
<p>The <a href="../../../../latest/applib/index/annotation/ActionLayout.html#hidden" class="xref page">hidden()</a> attribute indicates where (in the UI) the action should be hidden from the user.</p>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<i class="fa icon-tip" title="Tip"></i>
</td>
<td class="content">
<div class="paragraph">
<p>It is also possible to use <a href="../../../../latest/applib/index/annotation/Action.html#hidden" class="xref page">@Action#hidden</a> to hide an action at the domain layer.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public class Customer {
@ActionLayout(hidden=Where.EVERYWHERE)
public void updateStatus() {
// ...
}
...
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>The acceptable values for the <code>where</code> parameter are:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>Where.EVERYWHERE</code> or <code>Where.ANYWHERE</code></p>
<div class="paragraph">
<p>The action should be hidden at all times.</p>
</div>
</li>
<li>
<p><code>Where.NOWHERE</code></p>
<div class="paragraph">
<p>The action should not be hidden.</p>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>The other values of the <code>Where</code> enum have no meaning for a collection.</p>
</div>
</div>
<div class="sect2">
<h3 id="names"><a class="anchor" href="#names"></a>Names</h3>
<div class="paragraph">
<p>The <a href="../../../../latest/applib/index/annotation/ActionLayout.html#named" class="xref page">named()</a> element explicitly specifies the action&#8217;s name, overriding the name that would normally be inferred from the Java source code.</p>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<i class="fa icon-tip" title="Tip"></i>
</td>
<td class="content">
<div class="paragraph">
<p>Only use this attribute when the desired name cannot be used in Java source code.
Examples of that include a name that would be a reserved Java keyword (eg "package"), or a name that has punctuation, eg apostrophes.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public class Customer {
@ActionLayout(named="Get credit rating") <i class="conum" data-value="1"></i><b>(1)</b>
public CreditRating obtainCreditRating() {
// ...
}
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>"get" normally indicates a property rather than an action.</td>
</tr>
</table>
</div>
<div class="sect3">
<h4 id="alternatives"><a class="anchor" href="#alternatives"></a>Alternatives</h4>
<div class="paragraph">
<p>The framework also provides a separate, powerful mechanism for <a href="../../../../../userguide/latest/btb/i18n.html" class="xref page">internationalization</a>.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="smoother-ui"><a class="anchor" href="#smoother-ui"></a>Smoother UI</h3>
<div class="paragraph">
<p>Often an action, when invoked, will return the target (in other words, will "return this").
The <a href="../../../../latest/applib/index/annotation/ActionLayout.html#redirectPolicy" class="xref page">redirectPolicy()</a> element is used to control how the object is re-rendered.</p>
</div>
<div class="paragraph">
<p>There are three options:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>if set to <code>ONLY_IF_DIFFERS</code>, then the existing web page will not be re-rendered, rather it will be updated in-place (using Ajax).</p>
<div class="paragraph">
<p>This makes for a smoother UI.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>Any properties with <a href="../../../../latest/applib/index/annotation/PropertyLayout.html#repainting" class="xref page">@PropertyLayout#repainting</a> set to <code>NO_REPAINT</code> are then <em>not</em> updated.</p>
</div>
</td>
</tr>
</table>
</div>
</li>
<li>
<p>if set to <code>EVEN_IF_SAME</code>, then a redirect occurs and a new web page is rendered.</p>
</li>
<li>
<p>if set to <code>AS_CONFIGURED</code>, then the default behaviour is as specified by the <code>causeway.viewer.wicket.redirectEvenIfSameObject</code> <a href="../../../../../vw/latest/setup-and-configuration.html" class="xref page">configuration property</a>).</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>One use case for choosing <code>EVEN_IF_SAME</code> is if the action "returning this" is intended in some way to require that the object use a different layout, as per multiple layout support, as specified using the <a href="../../../../latest/applib-methods/ui-hints.html#layout" class="xref page">layout()</a> method.</p>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">import lombok.Getter;
import lombok.Setter;
public class Customer {
@Getter @Setter
@PropertyLayout(hidden=ALWAYS)
private String layout;
public String layout() { <i class="conum" data-value="1"></i><b>(1)</b>
return layout;
}
@ActionLayout(
redirect=EVEN_IF_SAME <i class="conum" data-value="2"></i><b>(2)</b>
)
public Customer switchToEditMode() {
setLayout("edit");
return this;
}
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>specifies the alternate layout to use, eg <code>Customer-edit.layout.xml</code>.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>even though this action returns the same target object, still re-render the page.</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>If <code>switchToEditMode()</code> action is invoked, then the UI will attempt to render the customer using a <code>Customer.layout.edit.xml</code> layout file (instead of the default <code>Customer.layout.xml</code>).</p>
</div>
</div>
</div>
</div>
</article>
<aside class="article-aside toc hide-for-print" role="navigation">
<p class="toc-title">On this page</p>
<div id="article-toc"></div>
</aside>
</main>
</div>
<footer class="footer">
<div class="content">
<div class="copyright">
<p>
Copyright © 2010~2024 The Apache Software Foundation, licensed under the Apache License, v2.0.
<br/>
Apache, the Apache feather logo, Apache Causeway, and the Apache Causeway project logo are all trademarks of The Apache Software Foundation.
</p>
</div>
<div class="revision">
<p>Revision: build-website.20260712-1517</p>
</div>
</div>
</footer>
<script src="../../../../../_/js/site.js"></script>
<script async src="../../../../../_/js/vendor/highlight.js"></script>
<script src="../../../../../_/js/vendor/jquery-3.4.1.min.js"></script>
<script src="../../../../../_/js/vendor/jquery-ui-1.12.1.custom.widget-only.min.js"></script>
<script src="../../../../../_/js/vendor/jquery.tocify.min.js"></script>
<script>
$(function() {
$("#article-toc").tocify( {
showEffect: "slideDown",
hashGenerator: "pretty",
hideEffect: "slideUp",
selectors: "h2, h3",
scrollTo: 120,
smoothScroll: true,
theme: "jqueryui",
highlightOnScroll: true
} );
});
</script>
<script src="../../../../../_/js/vendor/docsearch.min.js"></script>
<script>
function focusSearchInput () { document.querySelector('#algolia-search-input').focus() }
var search = docsearch({
appId: '5ISP5TFAEN',
apiKey: '0fc51c28b4ad46e7318e96d4e97fab7c',
indexName: 'causeway-apache-org',
inputSelector: '#algolia-search-input',
autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
debug: false,
}).autocomplete
search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
focusSearchInput()
window.addEventListener('load', focusSearchInput);
</script>
<!--
docsearch options:
https://docsearch.algolia.com/docs/behavior/
-->
<!--
https://www.algolia.com/doc/api-reference/api-parameters/
algoliaOptions: { hitsPerPage: 6 },
-->
</body>
</html>