blob: 022e7ec8c11f049f9ea3cae846c6939c902e479e [file]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>@PropertyLayout :: causeway</title>
<link rel="canonical" href="https://causeway.apache.org/refguide/latest/applib/index/annotation/PropertyLayout.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.2.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="../../../../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="../../../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.2.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">
<a href="../../../../3.5.0/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 is-current">
<a href="../../../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="PropertyLayout.html">@PropertyLayout</a></li>
</ul>
</nav>
<div class="page-versions">
<button class="version-menu-toggle" title="Show other versions of page">3.2.0</button>
<div class="version-menu">
<a class="version" href="../../../../latest/applib/index/annotation/PropertyLayout.html">4.0.0-M1</a>
<a class="version" href="../../../../3.5.0/applib/index/annotation/PropertyLayout.html">3.5.0</a>
<a class="version" href="../../../../3.4.0/applib/index/annotation/PropertyLayout.html">3.4.0</a>
<a class="version" href="../../../../3.3.0/applib/index/annotation/PropertyLayout.html">3.3.0</a>
<a class="version is-current" href="PropertyLayout.html">3.2.0</a>
<a class="version" href="../../../../3.1.0/applib/index/annotation/PropertyLayout.html">3.1.0</a>
<a class="version" href="../../../../3.0.0/applib/index/annotation/PropertyLayout.html">3.0.0</a>
<a class="version" href="../../../../2.1.0/applib/index/annotation/PropertyLayout.html">2.1.0</a>
<a class="version" href="../../../../2.0.0/applib/index/annotation/PropertyLayout.html">2.0.0</a>
</div>
</div>
<div class="edit-this-page"><a href="https://github.com/apache/causeway/edit/3.2.0/antora/components/refguide-index/modules/applib/pages/index/annotation/PropertyLayout.adoc">Edit</a></div>
</div>
<article class="doc">
<a name="section-top"></a>
<h1 class="page">@PropertyLayout</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Collects together all layout hints for a property of a domain object.</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">PropertyLayout.java</div>
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">@interface PropertyLayout {
String cssClass() default ""; <i class="conum" data-value="1"></i><b>(1)</b>
String describedAs() default ""; <i class="conum" data-value="2"></i><b>(2)</b>
String fieldSetId() default "__infer"; <i class="conum" data-value="3"></i><b>(3)</b>
String fieldSetName() default "__infer"; <i class="conum" data-value="4"></i><b>(4)</b>
Where hidden() default Where.NOT_SPECIFIED; <i class="conum" data-value="5"></i><b>(5)</b>
LabelPosition labelPosition() default LabelPosition.NOT_SPECIFIED; <i class="conum" data-value="6"></i><b>(6)</b>
int multiLine() default -1; <i class="conum" data-value="7"></i><b>(7)</b>
String named() default ""; <i class="conum" data-value="8"></i><b>(8)</b>
Navigable navigable() default Navigable.NOT_SPECIFIED; <i class="conum" data-value="9"></i><b>(9)</b>
String navigableSubtree() default ""; <i class="conum" data-value="10"></i><b>(10)</b>
PromptStyle promptStyle() default PromptStyle.NOT_SPECIFIED; <i class="conum" data-value="11"></i><b>(11)</b>
Repainting repainting() default Repainting.NOT_SPECIFIED; <i class="conum" data-value="12"></i><b>(12)</b>
String sequence() default ""; <i class="conum" data-value="13"></i><b>(13)</b>
int typicalLength() default -1; <i class="conum" data-value="14"></i><b>(14)</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="#cssClass">cssClass</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Indicates the css class that a property should have, to allow more targeted styling in <code>application.css</code> .</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td><a href="#describedAs">describedAs</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Description of this property, eg to be rendered in a tooltip.</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</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> .XML layout is presentXML layout is absent</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</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> .</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="5"></i><b>5</b></td>
<td><a href="#hidden">hidden</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Indicates where in the UI the property should <em>not</em> be visible.</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="6"></i><b>6</b></td>
<td><a href="#labelPosition">labelPosition</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>In forms, positioning of the label (left, top or none) relative to the property value.</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="7"></i><b>7</b></td>
<td><a href="#multiLine">multiLine</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>For string properties (and parameters), render as a text area over specified number of lines.</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="8"></i><b>8</b></td>
<td><a href="#named">named</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Name of this property (overriding the name derived from its name in code).</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="9"></i><b>9</b></td>
<td><a href="#navigable">navigable</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Whether this property should be used to construct the navigable chain of breadcrumbs in the UI.</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="10"></i><b>10</b></td>
<td><a href="#navigableSubtree">navigableSubtree</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>When set, identifies a logical child, that is navigable via the UI.</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 properties of this domain object are be edited, 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="#repainting">repainting</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Indicates that the value held by the property never changes over time, even when other properties of the object do change.</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="13"></i><b>13</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>
<tr>
<td><i class="conum" data-value="14"></i><b>14</b></td>
<td><a href="#typicalLength">typicalLength</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>The typical entry length of a field, use to determine the optimum width for display.</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="cssClass"><a class="anchor" href="#cssClass"></a>cssClass</h3>
<div class="paragraph">
<p>Indicates the css class that a property should have, to allow more targeted styling in <code>application.css</code> .</p>
</div>
</div>
<div class="sect2">
<h3 id="describedAs"><a class="anchor" href="#describedAs"></a>describedAs</h3>
<div class="paragraph">
<p>Description of this property, 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> .XML layout is presentXML layout is absent</p>
</div>
<div class="paragraph">
<p>A <em>FieldSet</em> is a layout component for property grouping, that can either be specified via a <code>Xxx.layout.xml</code> file (with <code>Xxx</code> the domain object name) or is inferred by the framework via annotations (aka the programming model). <em>FieldSet</em> s are represented in-memory and requires a framework internal unique id per domain object type.</p>
</div>
<div class="paragraph">
<p>Following 2 scenarios have slightly different behavior:</p>
</div>
<div class="paragraph">
<p>When a XML layout is present, every <em>FieldSet</em> <strong>id</strong> is either explicitly specified in the file or may be inferred from a non-empty <strong>name</strong> . If the <strong>name</strong> is empty "" or missing, then the <strong>id</strong> within the file is mandatory.</p>
</div>
<div class="paragraph">
<p>If this <em>Property</em> is not already explicitly listed within the XML layout, we lookup the associated <em>FieldSet</em> in the XML layout file first matching by <strong>id</strong> using <em>@PropertyLayout(fieldSetId=&#8230;&#8203;)</em> if any, then falling back to matching by (friendly) <strong>name</strong> using @PropertyLayout(fieldSetName=&#8230;&#8203;)} if any.</p>
</div>
<div class="paragraph">
<p>We reify (in-memory) the associated <em>FieldSet</em> using <em>@PropertyLayout(fieldSetId=&#8230;&#8203;)</em> (if present) as its <strong>id</strong> and using <em>@PropertyLayout(fieldSetId=&#8230;&#8203;)</em> as its (friendly) <strong>name</strong> . While if no <strong>id</strong> is provided an <strong>id</strong> is inferred from the (friendly) <strong>name</strong> , in which case the (friendly) <strong>name</strong> must not be empty. Whereas if no (friendly) <strong>name</strong> is provided a (friendly) <strong>name</strong> is inferred from the <strong>id</strong> , in which case the <strong>id</strong> must not be empty.</p>
</div>
<div class="paragraph">
<p>With <em>@PropertyLayout(sequence=&#8230;&#8203;)</em> the relative position within that <em>FieldSet</em> can be specified.</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> .</p>
</div>
<div class="paragraph">
<p>Explicitly specifying an empty "" <strong>friendly-name</strong> will suppress the <em>FieldSet</em> 's label from being rendered.</p>
</div>
<div class="paragraph">
<p>For a more in depth description see <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 property should <em>not</em> be visible.</p>
</div>
</div>
<div class="sect2">
<h3 id="labelPosition"><a class="anchor" href="#labelPosition"></a>labelPosition</h3>
<div class="paragraph">
<p>In forms, positioning of the label (left, top or none) relative to the property value.</p>
</div>
<div class="paragraph">
<p>If not specified, the default depends upon the property value&#8217;s datatype (including whether the field is <em>#multiLine()</em> .</p>
</div>
</div>
<div class="sect2">
<h3 id="multiLine"><a class="anchor" href="#multiLine"></a>multiLine</h3>
<div class="paragraph">
<p>For string properties (and parameters), render as a text area over specified number of lines.</p>
</div>
<div class="paragraph">
<p>If set to &gt; 1, then <em>#labelPosition()</em> defaults to <em>LabelPosition#TOP top</em> .</p>
</div>
</div>
<div class="sect2">
<h3 id="named"><a class="anchor" href="#named"></a>named</h3>
<div class="paragraph">
<p>Name of this property (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="navigable"><a class="anchor" href="#navigable"></a>navigable</h3>
<div class="paragraph">
<p>Whether this property should be used to construct the navigable chain of breadcrumbs in the UI.</p>
</div>
<div class="paragraph">
<p>Only one property can be annotated as such per domain class.</p>
</div>
</div>
<div class="sect2">
<h3 id="navigableSubtree"><a class="anchor" href="#navigableSubtree"></a>navigableSubtree</h3>
<div class="paragraph">
<p>When set, identifies a logical child, that is navigable via the UI.</p>
</div>
<div class="paragraph">
<p>The order of appearance of this tree branch in the UI relative to other branches of the same tree node, is given in <em>Dewey-decimal</em> notation.</p>
</div>
</div>
<div class="sect2">
<h3 id="promptStyle"><a class="anchor" href="#promptStyle"></a>promptStyle</h3>
<div class="paragraph">
<p>How the properties of this domain object are be edited, either <em>PromptStyle#DIALOG dialog</em> or <em>PromptStyle#INLINE inline</em> .</p>
</div>
</div>
<div class="sect2">
<h3 id="repainting"><a class="anchor" href="#repainting"></a>repainting</h3>
<div class="paragraph">
<p>Indicates that the value held by the property never changes over time, even when other properties of the object do change.</p>
</div>
<div class="paragraph">
<p>Setting this attribute to <code>RepaintPolicy.NO_REPAINT</code> is used as a hint to the viewer to not repaint the property after an AJAX update of some other property/ies of the object have changed. This is primarily for performance, eg can improve the user experience when rendering PDFs/blobs.</p>
</div>
<div class="paragraph">
<p>Note that for this to work, the viewer will also ensure that none of the property&#8217;s parent component (such as a tab group panel) are re-rendered.</p>
</div>
<div class="paragraph">
<p>Design note: we considered implementing this an "immutable" flag on the <a href="../../../../latest/applib/index/annotation/Property.html" class="xref page">Property</a> annotation (because this flag is typically appropriate for immutable/unchanging properties of a domain object). However, we decided not to do that, on the basis that it might be interpreted as having a deeper impact within the framework than simply a hint for rendering.</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>Also governs slot-in order for the layout group that collects all unreferenced <em>Properties</em> , unless overwritten via application scoped config option that enforced alphabetical order:_causeway.applib.annotation.propertyLayout.sequencePolicyIfUnreferenced_</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 class="sect2">
<h3 id="typicalLength"><a class="anchor" href="#typicalLength"></a>typicalLength</h3>
<div class="paragraph">
<p>The typical entry length of a field, use to determine the optimum width for display.</p>
</div>
<div class="paragraph">
<p>Note: the Wicket viewer does not use this information.</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 ToDoItem {
@PropertyLayout(
cssClass="x-key",
named="Description of this &lt;i&gt;item&lt;/i&gt;",
namedEscaped=false,
describedAs="What needs to be done",
labelPosition=LabelPosition.LEFT,
typicalLength=80
)
public String getDescription() { /* ... */ }
...
}</code></pre>
</div>
</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>@PropertyLayout</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 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 annotation is one of a handful (others including <a href="../../../../latest/applib/index/annotation/Collection.html" class="xref page">@Collection</a>, <a href="../../../../latest/applib/index/annotation/CollectionLayout.html" class="xref page">@CollectionLayout</a> and <a href="../../../../latest/applib/index/annotation/Property.html" class="xref page">@Property</a>) that can also be applied to the field, rather than the getter method. This is specifically
so that boilerplate-busting tools such as <a href="https://projectlombok.org/">Project Lombok</a> can be used.</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="label-positioning"><a class="anchor" href="#label-positioning"></a>Label Positioning</h3>
<div class="paragraph">
<p>The <a href="../../../../latest/applib/index/annotation/PropertyLayout.html#labelPosition" class="xref page">labelPosition()</a> element determines the positioning of labels for properties.</p>
</div>
<div class="paragraph">
<p>The positioning of labels is typically <code>LEFT</code>, but can be positioned to the <code>TOP</code>.
The one exception is <a href="../../../../latest/applib/index/annotation/PropertyLayout.html#multiLine" class="xref page">multiLine</a> string properties, where the label defaults to <code>TOP</code> automatically (to provide as much real-estate for the multiline text field as possible).</p>
</div>
<div class="paragraph">
<p>For boolean properties a positioning of <code>RIGHT</code> is also allowed; this is ignored for all other types.</p>
</div>
<div class="paragraph">
<p>It is also possible to suppress the label altogether, using <code>NONE</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 ToDoItem {
@PropertyLayout(
labelPosition=LabelPosition.TOP
)
@Getter @Setter
private String description;
// ...
}</code></pre>
</div>
</div>
<div class="sect3">
<h4 id="default-settings"><a class="anchor" href="#default-settings"></a>Default settings</h4>
<div class="paragraph">
<p>If you want a consistent look-n-feel throughout the app, eg all property labels to the top, then it&#8217;d be rather frustrating to have to annotate every property.</p>
</div>
<div class="paragraph">
<p>Instead, a default can be specified using the <a href="../../../../latest/config/sections/causeway.applib.html#causeway.applib.annotation.property-layout.label-position" class="xref page">causeway.applib.annotation.property-layout.label-position</a> configuration property:</p>
</div>
<div class="listingblock">
<div class="title">application.properties</div>
<div class="content">
<pre class="highlightjs highlight"><code class="language-ini hljs" data-lang="ini">causeway.applib.annotation.property-layout.label-position=TOP</code></pre>
</div>
</div>
<div class="paragraph">
<p>or</p>
</div>
<div class="listingblock">
<div class="title">application.properties</div>
<div class="content">
<pre class="highlightjs highlight"><code class="language-ini hljs" data-lang="ini">causeway.applib.annotation.property-layout.label-position=LEFT</code></pre>
</div>
</div>
<div class="paragraph">
<p>If these are not present then the framework will render according to internal defaults.
At the time of writing, this means labels are to the left for all datatypes except multiline strings.</p>
</div>
</div>
</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/PropertyLayout.html#promptStyle" class="xref page">promptStyle()</a> element is used to specify whether, when editing a domain object property, the new value for the property is prompted by way of a dialog box, or is prompted using an inline panel (replacing the property on the page).</p>
</div>
<div class="paragraph">
<p>If the attribute is not set, then the value of 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.
If this is itself not set, then an inline prompt is used.</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 {
@PropertyLayout(
promptStyle=PromptStyle.INLINE <i class="conum" data-value="1"></i><b>(1)</b>
)
@Getter @Setter
private 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>prompt for the new value for the property using an inline panel
Note that the value <code>INLINE_AS_IF_EDIT</code> does not make sense for properties; if specified then it will be interpreted as just <code>INLINE</code>.</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="text-boxes"><a class="anchor" href="#text-boxes"></a>Text boxes</h3>
<div class="paragraph">
<p>The <a href="../../../../latest/applib/index/annotation/PropertyLayout.html#multiLine" class="xref page">multiLine()</a> element specifies that the text field for a string property should span multiple lines.
It is ignored for other property types.</p>
</div>
<div class="paragraph">
<p>If set &gt; 1 (as would normally be the case), then the default <a href="../../../../latest/applib/index/annotation/PropertyLayout.html#labelPosition" class="xref page">labelPosition</a> defaults to <code>TOP</code> (rather than <code>LEFT</code>, as would normally be the case).</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 BugReport {
@PropertyLayout(
numberOfLines=10
)
@Getter @Setter
private String stepsToReproduce;
// ...
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Here the <code>stepsToReproduce</code> property will be displayed in a text box of 10 rows.</p>
</div>
</div>
<div class="sect2">
<h3 id="breadcrumbs-where-am-i"><a class="anchor" href="#breadcrumbs-where-am-i"></a>Breadcrumbs (where am I?)</h3>
<div class="paragraph">
<p>The <a href="../../../../latest/applib/index/annotation/PropertyLayout.html#navigable" class="xref page">navigable()</a> element allows to specify a domain object&#8217;s (or view&#8217;s) navigable parent, as utilized by the 'Where am I' feature.</p>
</div>
<div class="paragraph">
<p>For example, suppose:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">@DomainObject
public class Company {
// ...
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>then:</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;
@DomainObject
public class Employee {
@PropertyLayout(navigable=Navigable.PARENT)
@Getter @Setter
private Company myCompany;
// ...
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>This points up to the <code>Employee</code>'s parent <code>Company</code>.</p>
</div>
<div class="paragraph">
<p>For further details on using a navigable tree-structure, see <a href="../../../../../vw/latest/features.html#where-am-i" class="xref page">Where am I</a> in the user guide.</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/PropertyLayout.html#describedAs" class="xref page">describedAs()</a> element is used to provide a short description of the property to the user.</p>
</div>
<div class="paragraph">
<p>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 {
@PropertyLayout(
describedAs = "The name that the customer has indicated " +
"that they wish to be addressed as " +
"(e.g. Johnny rather than Jonathan)")
private String firstName;
// ...
}</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/PropertyLayout.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 property.
<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">import lombok.Getter;
import lombok.Setter;
public class ToDoItem {
@PropertyLayout(cssClass="x-key")
@Getter @Setter
private LocalDate dueBy;
// ...
}</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="date-intervals"><a class="anchor" href="#date-intervals"></a>Date intervals</h3>
<div class="paragraph">
<p>The <a href="../../../../latest/applib/index/annotation/PropertyLayout.html#renderDay" class="xref page">renderDay()</a> element applies only to date properties whereby the date will be rendered as the day before the value actually held in the domain object.
It is ignored for properties of other types.</p>
</div>
<div class="paragraph">
<p>This behaviour might at first glance appear odd, but the rationale is to support the use case of a sequence of instances that represent adjacent intervals of time.
In such cases there would typically be <code>startDate</code> and <code>endDate</code> properties, eg for all of Q2. Storing this as a half-closed interval&#8201;&#8212;&#8201;eg <code>[1-Apr-2015, 1-July-2015)</code>&#8201;&#8212;&#8201;can substantially simplify internal algorithms; the <code>endDate</code> of one interval will correspond to the <code>startDate</code> of the next.</p>
</div>
<div class="paragraph">
<p>However, from an end-user perspective the requirement may be to render the interval as a fully closed interval; eg the end date should be shown as <code>30-Jun-2015</code>.</p>
</div>
<div class="paragraph">
<p>This attribute therefore bridges the gap; it presents the information in a way that makes sense to an end-user, but also stores the domain object in a way that is easy work with internally.</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 Tenancy {
@Getter @Setter
private LocalDate startDate;
@PropertyLayout(
renderDay = RenderDay.AS_DAY_BEFORE
)
@Getter @Setter
private LocalDate endDate;
// ...
}</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="smoother-ui"><a class="anchor" href="#smoother-ui"></a>Smoother UI</h3>
<div class="paragraph">
<p>The <a href="../../../../latest/applib/index/annotation/PropertyLayout.html#repainting" class="xref page">repainting()</a> element is used to indicate that the value held by the property never changes over time, even when other properties of the object do change.</p>
</div>
<div class="paragraph">
<p>Setting this attribute to <code>true</code> is used as a hint to the viewer to not redraw the property after an AJAX update of some other property/ies of the object have changed.
This is primarily for performance, eg can improve the user experience when rendering PDFs/blobs.</p>
</div>
<div class="paragraph">
<p>Note that for this to work, the viewer will also ensure that none of the property&#8217;s parent component (such as a tab group panel) are re-rendered.</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>Design note: we considered implementing this an "immutable" flag on the <a href="../../../../latest/applib/index/annotation/Property.html" class="xref page">@Property</a> annotation (because this flag is typically appropriate for immutable/unchanging properties of a domain object).
However, we decided not to do that, on the basis that it might be interpreted as having a deeper impact within the framework than simply a hint for rendering.</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">import lombok.Getter;
import lombok.Setter;
public class Document {
@PropertyLayout(
repainting=Repainting.NO_REPAINT
)
@Getter @Setter
private Blob blob;
// ...
}</code></pre>
</div>
</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/PropertyLayout.html#named" class="xref page">named()</a> element explicitly specifies the property&#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>We recommend that you only use this element 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>The name is HTML escaped.</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 ToDoItem {
@PropertyLayout(
named="Description of this item"
)
@Getter @Setter
private String description;
// ...
}</code></pre>
</div>
</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="hiding-properties"><a class="anchor" href="#hiding-properties"></a>Hiding properties</h3>
<div class="paragraph">
<p>The <a href="../../../../latest/applib/index/annotation/PropertyLayout.html#hidden" class="xref page">hidden()</a> element attribute indicates where (in the UI) the property should be hidden from the user.</p>
</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 property should be hidden everywhere.</p>
</div>
</li>
<li>
<p><code>Where.ANYWHERE</code></p>
<div class="paragraph">
<p>Synonym for everywhere.</p>
</div>
</li>
<li>
<p><code>Where.OBJECT_FORMS</code></p>
<div class="paragraph">
<p>The property should be hidden when displayed within an object form.</p>
</div>
</li>
<li>
<p><code>Where.PARENTED_TABLES</code></p>
<div class="paragraph">
<p>The property should be hidden when displayed as a column of a table within a parent object&#8217;s collection.</p>
</div>
</li>
<li>
<p><code>Where.STANDALONE_TABLES</code></p>
<div class="paragraph">
<p>The property should be hidden when displayed as a column of a table showing a standalone list of objects, for example as returned by a repository query.</p>
</div>
</li>
<li>
<p><code>Where.ALL_TABLES</code></p>
<div class="paragraph">
<p>The property should be hidden when displayed as a column of a table, either an object&#8217;s * collection or a standalone list.
This combines <code>PARENTED_TABLES</code> and <code>STANDALONE_TABLES</code>.</p>
</div>
</li>
<li>
<p><code>Where.NOWHERE</code></p>
<div class="paragraph">
<p>The property should not be hidden, overriding any other metadata/conventions that would normally cause the property to be hidden.</p>
</div>
</li>
</ul>
</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 <a href="../../../../../vro/latest/about.html" class="xref page">RestfulObjects viewer</a> has only partial support for these <code>Where</code> enums.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="sect3">
<h4 id="examples-2"><a class="anchor" href="#examples-2"></a>Examples</h4>
<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 {
@PropertyLayout(
hidden=Where.ALL_TABLES
)
@Getter @Setter
private int internalId;
// ...
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>As one specific use case, if a property is annotated with <a href="../../../../latest/applib/index/annotation/Title.html" class="xref page">@Title</a>, then normally this should be hidden from all tables.
Annotating with <code>@Property(where=Where.NOWHERE)</code> overrides this.</p>
</div>
</div>
<div class="sect3">
<h4 id="alternatives-2"><a class="anchor" href="#alternatives-2"></a>Alternatives</h4>
<div class="paragraph">
<p>It is also possible to use <a href="../../../../latest/applib/index/annotation/PropertyLayout.html#hidden" class="xref page">@PropertyLayout#hidden</a> to hide a property at the domain layer.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="typical-string-length"><a class="anchor" href="#typical-string-length"></a>Typical (string) length</h3>
<div class="paragraph">
<p>The <a href="../../../../latest/applib/index/annotation/PropertyLayout.html#typicalLength" class="xref page">typicalLength()</a> element indicates the typical length of a string property.
It is ignored for properties of other types.</p>
</div>
<div class="paragraph">
<p>The information is intended as a hint to the UI to determine the space that should be given to render a particular string property.</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 {
@javax.jdo.annotations.Column(length=30)
@ParameterLayout(typicalLength=20)
@Getter @Setter
private String firstName;
// ...
}</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">
All that said, the <a href="../../../../../vw/latest/about.html" class="xref page">Web UI (Wicket viewer)</a> uses the maximum space available for all fields, so in effect ignores this element.
</td>
</tr>
</table>
</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>