blob: 843d79a998bb91183ad9b30e63be30e2ce94fd4f [file]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Layout :: causeway</title>
<link rel="canonical" href="https://causeway.apache.org/refguide/latest/applib-classes/layout.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">
<link rel="next" href="value-types.html" title="Value Types">
<link rel="prev" href="../applib/index/ViewModel.html" title="ViewModel">
</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" rel="prev" href="../applib/index/ViewModel.html" title="ViewModel"><span></span></a>
<a class="page-next" rel="next"
href="value-types.html" title="Value Types"><span></span></a>
<!--
page.parent doesn't seem to be set...
<a class="page-parent" rel="prev" href="about.html" title="ViewModel"><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="../../latest/applib/index/services/grid/GridLoaderService.html">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="../../latest/applib/index/services/grid/GridSystemService.html">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="../../latest/applib/index/services/iactnlayer/InteractionLayerTracker.html">InteractionLayerTracker</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../latest/applib/index/services/iactnlayer/InteractionService.html">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="about.html">Classes</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="events.html">Events</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="non-persisted-objects.html">Non-persisted objects</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../applib/index/ViewModel.html">ViewModel</a>
</li>
</ul>
</li>
<li class="nav-item is-current-page" data-depth="2">
<a class="nav-link" href="layout.html">Layout</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="value-types.html">Value Types</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../applib/index/value/Blob.html">Blob</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../applib/index/value/Clob.html">Clob</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../applib/index/value/Markup.html">Markup</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../applib/index/value/LocalResourcePath.html">LocalResourcePath</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../applib/index/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="utility.html">Utility Classes</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../applib/index/util/Enums.html">Enums</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../applib/index/util/ObjectContracts.html">ObjectContracts</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../applib/index/util/Reasons.html">Reasons</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../applib/index/util/ReasonBuffer.html">ReasonBuffer</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../applib/index/util/ReasonBuffer2.html">ReasonBuffer2</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../applib/index/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="mixees-and-mixins.html">Mixees and Mixins</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../applib/index/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="../applib/index/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="../applib/index/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="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-M1</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-M1</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-M1</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-M1</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-M1</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-M1</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-M1</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.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-M1</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-M1</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-M1</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-M1</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-M1</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-M1</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-M1</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-M1</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-M1</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-M1</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-M1</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-M1</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-M1</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="about.html">Classes</a></li>
<li><a href="layout.html">Layout</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-classes/layout.html">4.0.0-M1</a>
<a class="version is-current" href="layout.html">3.5.0</a>
<a class="version" href="../../3.4.0/applib-classes/layout.html">3.4.0</a>
<a class="version" href="../../3.3.0/applib-classes/layout.html">3.3.0</a>
<a class="version" href="../../3.2.0/applib-classes/layout.html">3.2.0</a>
<a class="version" href="../../3.1.0/applib-classes/layout.html">3.1.0</a>
<a class="version" href="../../3.0.0/applib-classes/layout.html">3.0.0</a>
<a class="version" href="../../2.1.0/applib-classes/layout.html">2.1.0</a>
<a class="version" href="../../2.0.0/applib-classes/layout.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/modules/applib-classes/pages/layout.adoc">Edit</a></div>
</div>
<article class="doc">
<a name="section-top"></a>
<h1 class="page">Layout</h1>
<div class="sect1">
<h2 id="object-layout"><a class="anchor" href="#object-layout"></a>Object Layout</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The <code>org.apache.causeway.applib.layout.grid</code> and <code>org.apache.causeway.applib.layout.component</code> packages together define a number of classes that allow the layout of domain objects (entities and view models) to be customized.
These classes fall into two main categories:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>grid classes, that define a grid structure of rows, columns, tab groups and tabs, and;</p>
</li>
<li>
<p>common component classes, that capture the layout metadata for an object&#8217;s properties, collections and actions.
These are bound (or associated) to the regions of the grid</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The framework provides an implementation of the grid classes modelled closely on <a href="http://getbootstrap.com">Bootstrap</a>, along with <a href="../../../vw/latest/about.html" class="xref page">Web UI (Wicket viewer)</a> components capable of rendering that grid system.
In principle it is also possible to extend the layout architecture for other grid systems.
The component classes, though, are intended to be reusable across all grid systems.</p>
</div>
<div class="paragraph">
<p>The component classes, meanwhile, are broadly equivalent to the "layout" annotations (<a href="../../latest/applib/index/annotation/PropertyLayout.html" class="xref page">@PropertyLayout</a>, <a href="../../latest/applib/index/annotation/CollectionLayout.html" class="xref page">@CollectionLayout</a>, <a href="../../latest/applib/index/annotation/ActionLayout.html" class="xref page">@ActionLayout</a> and <a href="../../latest/applib/index/annotation/DomainObjectLayout.html" class="xref page">@DomainObjectLayout</a></p>
</div>
<div class="paragraph">
<p>All of the classes in this package are JAXB-annotated, meaning that they can be serialized to/from XML (the <code>component</code> classes in the <code><a href="https://causeway.apache.org/applib/layout/component" class="bare">https://causeway.apache.org/applib/layout/component</a></code> XSD namespace, the bootstrap 3 grid classes in the <code><a href="https://causeway.apache.org/applib/layout/grid/bootstrap3" class="bare">https://causeway.apache.org/applib/layout/grid/bootstrap3</a></code> XSD namespace).
This ability to serialize to/from XML is used by the <a href="../../latest/applib/index/services/grid/GridLoaderService.html" class="xref page">GridLoaderService</a>, the default implementation of which reads the grid layout for a domain class from a <code>.layout.xml</code> file on the classpath.
It also allows the grid to be exposed through the REST API provided by the <a href="../../../vro/latest/about.html" class="xref page">REST API (Restful Objects viewer)</a>, as either XML or JSON.</p>
</div>
<div class="paragraph">
<p>The various components (properties, collections, actions and domain object) also allow a link to be associated with each.
These links are populated by the framework automatically when exposing the object layout grid through the REST API, pointing back to the standard Restful Objects resources.
This design greatly assists in the implementation of generic REST clients.</p>
</div>
<div class="sect2">
<h3 id="component"><a class="anchor" href="#component"></a>Component</h3>
<div class="paragraph">
<p>The component classes reside in the <code>org.apache.causeway.applib.layout.component</code> package, and consist of:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>FieldSet</code><br></p>
<div class="paragraph">
<p>A fieldset (sometimes also called a property group or member group) of a number of the domain object&#8217;s properties (along with any associated actions of those properties).</p>
</div>
</li>
<li>
<p>layout data classes, which correspond to the similarly named annotations:</p>
<div class="ulist">
<ul>
<li>
<p><code>PropertyLayoutData</code>, corresponding to the <a href="../../latest/applib/index/annotation/PropertyLayout.html" class="xref page">@PropertyLayout</a> annotation;</p>
</li>
<li>
<p><code>CollectionLayoutData</code>, corresponding to the <a href="../../latest/applib/index/annotation/CollectionLayout.html" class="xref page">@CollectionLayout</a> annotation;</p>
</li>
<li>
<p><code>ActionLayoutData</code>, corresponding to the <a href="../../latest/applib/index/annotation/ActionLayout.html" class="xref page">@ActionLayout</a> annotation;</p>
</li>
<li>
<p><code>DomainObjectLayoutData</code>, corresponding to the <a href="../../latest/applib/index/annotation/DomainObjectLayout.html" class="xref page">@DomainObjectLayout</a> annotation.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>In addition, the component package includes <code>Grid</code>, representing the top level container for a custom layout for a domain object.
<code>Grid</code> itself is merely an interface, but it also defines the visitor pattern to make it easy for validate and normalize the grid layouts.
The <code>GridAbstract</code> convenience superclass provides a partial implementation of this visitor pattern.</p>
</div>
<div class="paragraph">
<p>The XSD for these classes is available at <a href="https://causeway.apache.org/applib/layout/component/component.xsd" class="bare">https://causeway.apache.org/applib/layout/component/component.xsd</a>.</p>
</div>
</div>
<div class="sect2">
<h3 id="bootstrap-grid"><a class="anchor" href="#bootstrap-grid"></a>Bootstrap Grid</h3>
<div class="paragraph">
<p>The bootstrap grid classes are modelled closely on <a href="http://getbootstrap.com">Bootstrap</a>.
Bootstrap&#8217;s <a href="http://getbootstrap.com/css/#grid">grid system</a> divides the page width equally into 12 columns, and so each column spans 1 or more of these widths.
Thus, a column with a span of 12 is the full width, one with a span of 6 is half the width, one with a span of 4 is a third of the width, and so on.</p>
</div>
<div class="paragraph">
<p>When specifying the span of a column, Bootstrap also allows a size to be specified (<code>XS</code>, <code>SM</code>, <code>MD</code>, <code>LG</code>).
The size determines the rules for responsive design.
Apache Causeway defaults to <code>MD</code> but this can be overridden.
It is also possible to specify multiple size/spans for a given column.</p>
</div>
<div class="paragraph">
<p>The grid classes provided by Apache Causeway reside in the <code>org.apache.causeway.applib.layout.grid.bootstrap3</code> package, and consist of:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>BSGrid</code><br></p>
<div class="paragraph">
<p>Consists of a number of <code>BSRow</code>s.</p>
</div>
<div class="paragraph">
<p>This class is the concrete implementation of <code>Grid</code> interface, discussed previously.
As such, it extends the <code>Grid.Visitor</code> to iterate over all of the <code>Row</code>s of the grid.</p>
</div>
</li>
<li>
<p><code>BSRow</code><br></p>
<div class="paragraph">
<p>A container of <code>BSCol</code>s.
This element is rendered as <code>&lt;div class="row"&gt;</code>.</p>
</div>
</li>
<li>
<p><code>BSCol</code><br></p>
<div class="paragraph">
<p>A container of almost everything else.
A column most commonly contains properties (grouped into <code>FieldSet</code>s, described above) or collections (specified by <code>CollectionLayoutData</code>, also above).
However, a <code>Col</code> might instead contain a <code>BSTabGroup</code> (described below) in order that the object members is arranged into tabs.</p>
</div>
<div class="paragraph">
<p>It is also possible for a <code>Col</code> to contain the object&#8217;s title/icon (using <code>DomainObjectLayoutData</code>) or indeed arbitrary actions (using <code>`ActionLayoutData</code>).</p>
</div>
<div class="paragraph">
<p>Finally, a <code>BSCol</code> can also contain other <code>BSRow</code>s, allowing arbitrarily deep hierarchies of containers as required.</p>
</div>
<div class="paragraph">
<p>This element is rendered as, for example, <code>&lt;div class="col-md-4"&gt;</code> (for a size <code>MD</code>, span of 4).</p>
</div>
</li>
<li>
<p><code>BSTabGroup</code><br></p>
<div class="paragraph">
<p>A container of <code>BSTab</code>s.</p>
</div>
</li>
<li>
<p><code>BSTab</code><br></p>
<div class="paragraph">
<p>A container of <code>BSRow</code>s, which will in turn contain <code>BSCol</code>s and thence ultimately the object&#8217;s members.</p>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>There are also two close cousins of <code>Col</code>, namely <code>ClearFixVisible</code> and <code>ClearFixHidden</code>.
These map to Bootstrap&#8217;s <a href="http://getbootstrap.com/css/#responsive-utilities">responsive utility class</a>es, and provide greater control for responsive designs.</p>
</div>
<div class="paragraph">
<p>As you can probably guess, the <code>BSGrid</code> is the top-level object (that is, it is JAXB <code>@XmlRootElement</code>); this is the object that is serialized to/from XML.</p>
</div>
<div class="paragraph">
<p>All of these classes also allow custom CSS to be specified; these are added to the CSS classes for the corresponding <code>&lt;div</code>&gt; in the rendered page.
The <a href="../../../vw/latest/customisation.html#custom-css" class="xref page">application.css</a> file can then be used for application-specific CSS, allowing arbitrary fine-tuning of the layout of the page.</p>
</div>
<div class="paragraph">
<p>The XSD for these classes is available at <a href="https://causeway.apache.org/applib/layout/menubars/bootstrap3/menubars.xsd" class="bare">https://causeway.apache.org/applib/layout/menubars/bootstrap3/menubars.xsd</a>.</p>
</div>
</div>
<div class="sect2">
<h3 id="link"><a class="anchor" href="#link"></a>Link</h3>
<div class="paragraph">
<p>The link classes reside in the <code>org.apache.causeway.applib.layout.links</code> package, and consist of just the <code>Link</code> class:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">import lombok.Getter;
public class Link {
@Getter
private String rel; <i class="conum" data-value="1"></i><b>(1)</b>
@Getter
private String method; <i class="conum" data-value="2"></i><b>(2)</b>
@Getter
private String href; <i class="conum" data-value="3"></i><b>(3)</b>
@Getter
private String type; <i class="conum" data-value="4"></i><b>(4)</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 "rel" (as defined by section 2.7.1.2 of the RO spec v1.0), identifying the nature of the link.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>the HTTP method to access the link.
This is always "GET".</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>The (absolute) URL to access the Restful Objects resource.</td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
<td>The media type (<code>Accept</code> header) that will be returned by the URL.</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>The XSD for these classes is available at <a href="https://causeway.apache.org/applib/layout/links/links.xsd" class="bare">https://causeway.apache.org/applib/layout/links/links.xsd</a>.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="menubars-layout"><a class="anchor" href="#menubars-layout"></a>MenuBars Layout</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The <code>org.apache.causeway.applib.layout.menubars</code> package and subpackages define a number of interfaces classes that allow the layout of domain service actions to be organised across menu bars, menus and menu sections.</p>
</div>
<div class="paragraph">
<p>The classes define a hierarchical structure of menu bars, menus and menu sections.
Similar to the <a href="layout.html" class="xref page">object layout</a> classes, the concrete menu classes support bootstrap3; support for other layout systems is possible.</p>
</div>
<div class="paragraph">
<p>The component class <code>ServiceActionLayoutData</code> defines action metadata, being broadly equivalent to the "layout" annotations for actions, ie <a href="../../latest/applib/index/annotation/ActionLayout.html" class="xref page">@ActionLayout</a>.
This is similar to the <code>ActionLayoutData</code> component class used for object layouts, but also captures the identity of the "owning" domain service.
Service actions are grouped into menu sections.</p>
</div>
<div class="paragraph">
<p>All of the classes in this package are JAXB-annotated, meaning that they can be serialized to/from XML (in the <code><a href="https://causeway.apache.org/applib/layout/menubars/bootstrap3" class="bare">https://causeway.apache.org/applib/layout/menubars/bootstrap3</a></code> XSD namespace).
This ability to serialize to/from XML is used by the <a href="../../latest/applib/index/services/menu/MenuBarsLoaderService.html" class="xref page">MenuBarsLoaderService</a>, the default implementation of which reads the grid layout for a domain class from a <code>.layout.xml</code> file on the classpath.
It also allows the menu bars to be exposed through the REST API provided by the <a href="../../../vro/latest/about.html" class="xref page">REST API (Restful Objects viewer)</a>, as either XML or JSON.</p>
</div>
<div class="paragraph">
<p>The service action component also allows a link to be associated with it.
Each such link is populated by the framework automatically when exposing the menu bars layout through the REST API, pointing back to the standard Restful Objects resources.
This design greatly assists in the implementation of generic REST clients.</p>
</div>
<div class="sect2">
<h3 id="menus"><a class="anchor" href="#menus"></a>Menus</h3>
<div class="paragraph">
<p>The menu classes reside in the <code>org.apache.causeway.applib.layout.menubars.bootstrap3</code> package, consisting of:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>BSMenuBars</code></p>
<div class="paragraph">
<p>The top-level structure that define three fields: a primary <code>BSMenuBar</code>, secondary <code>BSMenuBar</code> and tertiary <code>BSMenuBar</code>.
The <a href="../../../vw/latest/about.html" class="xref page">Web UI (Wicket viewer)</a> places the primary bar to the left, the secondary bar aligned right, and the tertiary bar (expected to consist of just one <code>BSMenu</code>) under the user names.</p>
</div>
</li>
<li>
<p><code>BSMenuBar</code></p>
<div class="paragraph">
<p>consisting of one or many <code>BSMenu</code>s.</p>
</div>
</li>
<li>
<p><code>BSMenu</code></p>
<div class="paragraph">
<p>consisting of one or many <code>BSMenuSection</code>s.
The <a href="../../../vw/latest/about.html" class="xref page">Web UI (Wicket viewer)</a> renders a separator between each section.</p>
</div>
</li>
<li>
<p><code>BSMenuSection</code></p>
<div class="paragraph">
<p>consisting of one or many actions (<code>ServiceActionLayoutData</code>s)</p>
</div>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="components"><a class="anchor" href="#components"></a>Components</h3>
<div class="paragraph">
<p>The service action class reside in the <code>org.apache.causeway.applib.layout.component</code> package, consisting of just:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>ServiceActionLayoutData</code> class</p>
<div class="paragraph">
<p>which correspond to the <a href="../../latest/applib/index/annotation/ActionLayout.html" class="xref page">@ActionLayout</a> annotation.</p>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>This is similar to <code>ActionLayoutData</code> (of the <a href="layout.html" class="xref page">object layout</a> classes), however it also identifies the domain service to which it belongs.
(This isn&#8217;t required for the object layouts because the owner in that case is implicit).</p>
</div>
</div>
<div class="sect2">
<h3 id="link-2"><a class="anchor" href="#link-2"></a>Link</h3>
<div class="paragraph">
<p>The link classes reside in the <code>org.apache.causeway.applib.layout.links</code> package, and consist of just the <code>Link</code> class.</p>
</div>
<div class="paragraph">
<p>The XSD for these classes is available at <a href="https://causeway.apache.org/applib/layout/links/links.xsd" class="bare">https://causeway.apache.org/applib/layout/links/links.xsd</a>.</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.20251118-0002</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>