| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| <title>@CollectionLayout :: Apache Isis</title> |
| <link rel="canonical" href="https://isis.apache.org/refguide/2.0.0-M3/applib-ant/CollectionLayout.html"> |
| <meta name="generator" content="Antora 2.2.0"> |
| <link rel="stylesheet" href="../../../_/css/site.css"> |
| <link rel="stylesheet" href="../../../_/css/site-custom.css"> |
| <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,700,700i|Raleway:300,400,500,700,800|Montserrat:300,400,700" rel="stylesheet"> |
| <link rel="home" href="https://isis.apache.org" title="Apache Isis"> |
| <link rel="next" href="Column.html" title="Column"> |
| <link rel="prev" href="Collection.html" title="Collection"> |
| </head> |
| <body class="article"> |
| <header class="header"> |
| <nav class="navbar"> |
| <div class="navbar-brand"> |
| <a class="navbar-item" href="https://isis.apache.org"> |
| <span class="icon"> |
| <img src="../../../_/img/isis-logo-48x48.png"></img> |
| </span> |
| <span>Apache Isis</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">Demos & Tutorials</span> |
| <a class="navbar-item" href="../../../docs/latest/demo/about.html">Demo App</a> |
| <a class="navbar-item" href="https://danhaywood.gitlab.io/isis-petclinic-tutorial-docs/petclinic/1.16.2/intro.html">Petclinic (tutorial)</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">Development</span> |
| <a class="navbar-item" href="../../../setupguide/latest/about.html">Setup Guide</a> |
| <hr class="navbar-divider"/> |
| <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> |
| </div> |
| </div> |
| <div class="navbar-item has-dropdown is-hoverable"> |
| <a class="navbar-link" href="#">Libraries</a> |
| <div class="navbar-dropdown"> |
| <span class="navbar-item navbar-heading">For Use in Apps</span> |
| <a class="navbar-item" href="../../../subdomains/latest/about.html">Subdomain Libraries</a> |
| <a class="navbar-item" href="../../../valuetypes/latest/about.html">Value Types</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Integrate between Apps</span> |
| <a class="navbar-item" href="../../../mappings/latest/about.html">Bounded Context Mapping Libraries</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Other</span> |
| <a class="navbar-item" href="../../../incubator/latest/about.html">Incubator</a> |
| <a class="navbar-item" href="../../../legacy/latest/about.html">Legacy</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">Viewers</span> |
| <a class="navbar-item" href="../../../vw/latest/about.html">Wicket UI</a> |
| <a class="navbar-item" href="../../../vro/latest/about.html">Restful Objects (REST)</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Security</span> |
| <a class="navbar-item" href="../../../security/latest/about.html">Security Guide</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Persistence</span> |
| <a class="navbar-item" href="../../../pjdo/latest/about.html">DataNucleus (JDO)</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Extensions</span> |
| <a class="navbar-item" href="../../../extensions/latest/about.html">Extensions Catalog</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/ISIS">JIRA</a> |
| <a class="navbar-item" href="https://stackoverflow.com/questions/tagged/isis">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> |
| <a class="navbar-item" href="../../../docs/latest/archive/1-x.html">Archive (1.x)</a> |
| <hr class="navbar-divider"/> |
| <span class="navbar-item navbar-heading">Framework</span> |
| <a class="navbar-item" href="../../../conguide/latest/about.html">Contributors' Guide</a> |
| <a class="navbar-item" href="../../../comguide/latest/about.html">Committers' Guide</a> |
| <a class="navbar-item" href="../../../core/latest/about.html">Core Design</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/">Licenses</a> |
| <a class="navbar-item" href="https://www.apache.org/security/">Security</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/Isis.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="2.0.0-M3"> |
| <aside class="nav"> |
| <div class="panels"> |
| <div class="nav-panel-pagination"> |
| <a class="page-previous" rel="prev" href="Collection.html" title="Collection"><span></span></a> |
| <a class="page-next" rel="next" |
| href="Column.html" title="Column"><span></span></a> |
| <!-- |
| page.parent doesn't seem to be set... |
| <a class="page-parent" rel="prev" href="about.html" title="Collection"><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="about.html">Annotations</a> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="Action.html">Action</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="ActionLayout.html">ActionLayout</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="Collection.html">Collection</a> |
| </li> |
| <li class="nav-item is-current-page" data-depth="2"> |
| <a class="nav-link" href="CollectionLayout.html">CollectionLayout</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="Column.html">Column</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="Digits.html">Digits</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="Discriminator.html">Discriminator</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="DomainObject.html">DomainObject</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="DomainObjectLayout.html">DomainObjectLayout</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="DomainService.html">DomainService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="DomainServiceLayout.html">DomainServiceLayout</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="Facets.html">Facets</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="HomePage.html">HomePage</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="MemberOrder.html">MemberOrder</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="Mixin.html">Mixin</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="NotPersistent.html">NotPersistent.</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="Nullable.html">Nullable</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="MinLength.html">MinLength</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="Parameter.html">Parameter</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="ParameterLayout.html">ParameterLayout</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="Pattern.html">Pattern</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="PersistenceCapable.html">PersistenceCapable</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="PrimaryKey.html">PrimaryKey</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="Programmatic.html">Programmatic</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="Property.html">Property</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="PropertyLayout.html">PropertyLayout</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="IsisSessionScope.html">RequestScoped</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="Title.html">Title</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="ViewModel.html">ViewModel</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="XmlJavaTypeAdapter.html">XmlJavaTypeAdapter</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="XmlRootElement.html">XmlRootElement</a> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="1"> |
| <button class="nav-item-toggle"></button> |
| <a class="nav-link" href="../applib-methods/about.html">Methods</a> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-methods/prefixes.html">Supporting Method Prefixes</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-methods/reserved.html">Reserved Methods</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../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"> |
| <a class="nav-link" href="../applib-classes/ViewModel.html"><code>ViewModel</code></a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-classes/value-types.html">Value Types</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-classes/spec.html">Specification pattern</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-classes/i18n.html">i18n support</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-classes/roles-mixins-contributees.html">Roles, Mixins and Contributees</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-classes/utility.html">Utility Classes</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-classes/layout.html">Layout</a> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="1"> |
| <button class="nav-item-toggle"></button> |
| <a class="nav-link" href="../applib-svc/about.html">Domain Services</a> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/AcceptHeaderService.html">AcceptHeaderService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/ApplicationFeatureRepository.html">ApplicationFeatureRepository</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/AuditerService.html">AuditerService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/BookmarkService.html">BookmarkService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/BookmarkUiService.html">BookmarkUiService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/ClockService.html">ClockService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/CommandContext.html">CommandContext</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/CommandDtoProcessorService.html">CommandDtoProcessorService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/CommandExecutorService.html">CommandExecutorService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/CommandService.html">CommandService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/ConfigurationMenu.html">ConfigurationMenu</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/ConfigurationViewService.html">ConfigurationViewService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/ContentMappingService.html">ContentMappingService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/DeepLinkService.html">DeepLinkService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/EmailNotificationService.html">EmailNotificationService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/EmailService.html">EmailService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/ErrorReportingService.html">ErrorReportingService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/EventBusService.html">EventBusService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/ExceptionRecognizerService.html">ExceptionRecognizerService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/FactoryService.html">FactoryService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/GridLoaderService.html">GridLoaderService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/GridService.html">GridService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/GridSystemService.html">GridSystemService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/HealthCheckService.html">HealthCheckService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/HintStore.html">HintStore</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/HomePageResolverService.html">HomePageResolverService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/InteractionContext.html">InteractionContext</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/JaxbService.html">JaxbService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/LayoutService.html">LayoutService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/LayoutServiceMenu.html">LayoutServiceMenu</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/LocaleProvider.html">LocaleProvider</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/MenuBarsLoaderService.html">MenuBarsLoaderService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/MenuBarsService.html">MenuBarsService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/MessageService.html">MessageService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/MetaModelService.html">MetamodelService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/MetaModelServiceMenu.html">MetamodelServiceMenu</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/MetricsService.html">MetricsService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/PublisherService.html">PublisherService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/QueryResultsCache.html">QueryResultsCache</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/RepositoryService.html">RepositoryService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/RoutingService.html">RoutingService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/Scratchpad.html">Scratchpad</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/ServiceInjector.html">ServiceInjector</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/ServiceRegistry.html">ServiceRegistry</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/SessionLoggingService.html">SessionLoggingService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/SudoService.html">SudoService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/SwaggerService.html">SwaggerService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/TableColumnOrderService.html">TableColumnOrderService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/TitleService.html">TitleService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/TranslationService.html">TranslationService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/TranslationsResolver.html">TranslationsResolver</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/TransactionService.html">TransactionService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/UrlEncodingService.html">UrlEncodingService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/UserProfileService.html">UserProfileService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/UserRegistrationService.html">UserRegistrationService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/UserService.html">UserService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/WrapperFactory.html">WrapperFactory</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/XmlService.html">XmlService</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../applib-svc/XmlSnapshotService.html">XmlSnapshotService</a> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="1"> |
| <button class="nav-item-toggle"></button> |
| <a class="nav-link" href="../config/about.html">Configuration</a> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/isis.applib.html">Applib</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/isis.core.meta-model.html">Core MetaModel</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/isis.core.meta-model.introspector.html">Core MetaModel Introspection</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/isis.core.meta-model.validator.html">MetaModel Validator</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/isis.core.runtime.html">Core Runtime Services configurations</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/isis.core.runtime-services.html">Core Runtime Services configurations</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/isis.security.shiro.html">Shiro Security Implementation</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/isis.persistence.jdo-datanucleus.html">JDO DataNucleus</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/isis.persistence.jdo-datanucleus.impl.html">DataNucleus Configuration</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/isis.viewer.restfulobjects.html">Restful Objects Viewer</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/isis.viewer.wicket.html">Wicket Viewer</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/isis.extensions.html">Extensions</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/isis.value-types.html">Value types</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/isis.testing.html">Testing</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/isis.legacy.html">Legacy</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../config/sections/resteasy.html">RestEasy Configuration</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../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="../schema/about.html">Schema</a> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../schema/mml.html">MetaModel</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../schema/cmd.html">Command</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../schema/ixn.html">Interaction</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../schema/chg.html">Changes</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../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">2.0.0-M3</span> |
| </div> |
| <ul class="components"> |
| <li class="component"> |
| <span class="title"> </span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../docs/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">BC Mappings Catalog</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../mappings/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Committers' Guide</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../comguide/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Contributors' Guide</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../conguide/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Design Docs</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../core/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Extensions Catalog</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../extensions/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Incubator Catalog</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../incubator/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">JDO/DataNucleus</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../pjdo/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Legacy Catalog</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../legacy/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component is-current"> |
| <span class="title">Reference Guide</span> |
| <ul class="versions"> |
| <li class="version is-current is-latest"> |
| <a href="../about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Release Notes</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../relnotes/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Restful Objects Viewer</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../vro/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Security Guide</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../security/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Setup Guide</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../setupguide/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Subdomains Catalog</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../subdomains/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Testing Guide</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../testing/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">User Guide</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../userguide/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Value Types Catalog</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../valuetypes/2.0.0-M3/about.html">2.0.0-M3</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <span class="title">Wicket Viewer</span> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../vw/2.0.0-M3/about.html">2.0.0-M3</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/2.0.0-M3/about.html" class="home-link"></a> |
| <nav class="breadcrumbs" aria-label="breadcrumbs"> |
| <ul> |
| <li><a href="../about.html">Reference Guide</a></li> |
| <li><a href="about.html">Annotations</a></li> |
| <li><a href="CollectionLayout.html">CollectionLayout</a></li> |
| </ul> |
| </nav> |
| <div class="edit-this-page"><a href="https://github.com/apache/isis/edit/2.0.0-M3/api/applib/src/main/adoc/modules/applib-ant/pages/CollectionLayout.adoc">Edit</a></div> |
| </div> |
| <article class="doc"> |
| <a name="section-top"></a> |
| <h1 class="page"><code>@CollectionLayout</code></h1> |
| <div id="preamble"> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>The <code>@CollectionLayout</code> annotation applies to collections, collecting together all UI hints within a single annotation. |
| It is also possible to apply the annotation to actions of domain services that are acting as contributed collections.</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">@Inherited |
| @Target({ |
| ElementType.METHOD, |
| ElementType.FIELD, |
| ElementType.TYPE, |
| ElementType.ANNOTATION_TYPE |
| }) |
| @Retention(RetentionPolicy.RUNTIME) |
| @Mixin(method = "coll") |
| public @interface CollectionLayout { |
| |
| String cssClass() <i class="conum" data-value="1"></i><b>(1)</b> |
| default ""; |
| |
| String defaultView() <i class="conum" data-value="2"></i><b>(2)</b> |
| default ""; |
| |
| String describedAs() <i class="conum" data-value="3"></i><b>(3)</b> |
| default ""; |
| |
| Where hidden() <i class="conum" data-value="4"></i><b>(4)</b> |
| default Where.NOT_SPECIFIED; |
| |
| String named() <i class="conum" data-value="5"></i><b>(5)</b> |
| default ""; |
| |
| boolean namedEscaped() <i class="conum" data-value="6"></i><b>(6)</b> |
| default true; |
| |
| int paged() <i class="conum" data-value="7"></i><b>(7)</b> |
| default -1; |
| |
| Class sortedBy() <i class="conum" data-value="8"></i><b>(8)</b> |
| default Comparator.class; |
| |
| }</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"><code>cssClass()</code></a> |
| <div class="paragraph"> |
| <p>The css class that a collection should have, to allow more targetted styling in <a href="../config/application-specific/application-css.html" class="page"><code>application.css</code></a></p> |
| </div></td> |
| </tr> |
| <tr> |
| <td><i class="conum" data-value="2"></i><b>2</b></td> |
| <td><a href="#defaultView"><code>defaultView()</code></a> |
| <div class="paragraph"> |
| <p>Which view is selected by default, if multiple views are available.</p> |
| </div></td> |
| </tr> |
| <tr> |
| <td><i class="conum" data-value="3"></i><b>3</b></td> |
| <td><a href="#describedAs"><code>describedAs()</code></a> |
| <div class="paragraph"> |
| <p>Description of this collection, eg to be rendered in a tooltip.</p> |
| </div></td> |
| </tr> |
| <tr> |
| <td><i class="conum" data-value="4"></i><b>4</b></td> |
| <td><a href="#hidden"><code>hidden()</code></a> |
| <div class="paragraph"> |
| <p>Indicates where (in the UI) the collection should be hidden from the user.</p> |
| </div></td> |
| </tr> |
| <tr> |
| <td><i class="conum" data-value="5"></i><b>5</b></td> |
| <td><a href="#named"><code>named()</code></a> |
| <div class="paragraph"> |
| <p>To override the name inferred from the collection’s name in code.<br> |
| 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></td> |
| </tr> |
| <tr> |
| <td><i class="conum" data-value="6"></i><b>6</b></td> |
| <td><code>namedEscaped()</code> |
| <div class="paragraph"> |
| <p>Whether to HTML escape the name of this property.</p> |
| </div></td> |
| </tr> |
| <tr> |
| <td><i class="conum" data-value="7"></i><b>7</b></td> |
| <td><a href="#paged"><code>paged()</code></a> |
| <div class="paragraph"> |
| <p>The page size for instances of this class when rendered within a table.</p> |
| </div></td> |
| </tr> |
| <tr> |
| <td><i class="conum" data-value="8"></i><b>8</b></td> |
| <td><a href="#sortedBy"><code>sortedBy()</code></a> |
| <div class="paragraph"> |
| <p>Indicates that the elements in the <code>java.util.SortedSet</code> collection should be sorted according to a specified <code>Comparator</code> rather than their natural sort order.</p> |
| </div></td> |
| </tr> |
| </table> |
| </div> |
| <div class="paragraph"> |
| <p>For example:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public class ToDoItem { |
| @CollectionLayout( |
| cssClass="x-key", |
| named="Todo items that are <i>dependencies</i> of this item.", |
| namedEscaped=false, |
| describedAs="Other todo items that must be completed before this one", |
| labelPosition=LabelPosition.LEFT, |
| render=EAGERLY) |
| public SortedSet<ToDoItem> getDependencies() { /* ... */ } |
| ... |
| }</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>@CollectionLayout</code> annotation, a <a href="../../../userguide/2.0.0-M3/fun/ui.html#object-layout" class="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="Collection.html" class="page"><code>@Collection</code></a>, <a href="Property.html" class="page"><code>@Property</code></a> and <a href="PropertyLayout.html" class="page"><code>@PropertyLayout</code></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="cssClass"><a class="anchor" href="#cssClass"></a><code>cssClass()</code></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>The <code>cssClass</code> attribute can be used to render additional CSS classes in the HTML (a wrapping <code><div></code>) that represents the collection. <a href="../config/application-specific/application-css.html" class="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 { |
| |
| @CollectionLayout( |
| cssClass="x-important" |
| ) |
| @Getter @Setter |
| private SortedSet<ToDoItem> dependencies = ...; |
| |
| }</code></pre> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="alternatives"><a class="anchor" href="#alternatives"></a>Alternatives</h3> |
| <div class="paragraph"> |
| <p>As an alternative to using the annotation, the dynamic <a href="../../../userguide/2.0.0-M3/fun/ui.html#object-layout" class="page">file-based layout</a> can be used instead.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="see-also"><a class="anchor" href="#see-also"></a>See also</h3> |
| <div class="paragraph"> |
| <p>This attribute can also be applied to:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><a href="DomainObjectLayout.html#cssClass" class="page">domain objects</a></p> |
| </li> |
| <li> |
| <p><a href="ActionLayout.html#cssClass" class="page">actions</a></p> |
| </li> |
| <li> |
| <p><a href="PropertyLayout.html#cssClass" class="page">properties</a></p> |
| </li> |
| <li> |
| <p><a href="ParameterLayout.html#cssClass" class="page">parameters</a>.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="defaultView"><a class="anchor" href="#defaultView"></a><code>defaultView()</code></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>The <code>defaultView</code> attribute is used to select which of views should be used by default for a given collection. |
| Without any hint the collection is shown collapsed (to save real estate and reduce load time).</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 BusRoute { |
| |
| @CollectionLayout( defaultView="table" ) <i class="conum" data-value="1"></i><b>(1)</b> |
| @Getter @Setter |
| private SortedSet<BusStop> stops = ... |
| |
| }</code></pre> |
| </div> |
| </div> |
| <div class="colist arabic"> |
| <table> |
| <tr> |
| <td><i class="conum" data-value="1"></i><b>1</b></td> |
| <td>renders the collection as a table view.</td> |
| </tr> |
| </table> |
| </div> |
| <div class="paragraph"> |
| <p>The <a href="../../../vw/2.0.0-M3/about.html" class="page">Wicket viewer</a> allows additional views to be configured to render collections of objects, eg <a href="../../../vw/2.0.0-M3/exceldownload/about.html" class="page">Excel Download</a> ("excel"), <a href="../../../vw/2.0.0-M3/fullcalendar/about.html" class="page">Fullcalendar</a> ("fullcalendar") and <a href="../../../vw/2.0.0-M3/gmap3/about.html" class="page">Gmap3</a> ("map") extensions. |
| This attribute can be used to select any of these alternative views instead.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="alternatives-2"><a class="anchor" href="#alternatives-2"></a>Alternatives</h3> |
| <div class="paragraph"> |
| <p>As an alternative to using the annotation, the dynamic <a href="../../../userguide/2.0.0-M3/fun/ui.html#object-layout" class="page">file-based layout</a> can be used instead.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="describedAs"><a class="anchor" href="#describedAs"></a><code>describedAs()</code></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>The <code>describedAs</code> attribute is used to provide a short description of the collection to the user. |
| In the <a href="../../../vw/2.0.0-M3/about.html" class="page">Wicket viewer</a> it is displayed as a 'tool tip'.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The <code>describedAs</code> attribute can also be specified for <a href="PropertyLayout.html#describedAs" class="page">properties</a>, <a href="ActionLayout.html#describedAs" class="page">actions</a>, <a href="ParameterLayout.html#describedAs" class="page">parameters</a> and <a href="DomainObjectLayout.html#describedAs" class="page">domain objects</a>.</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 { |
| |
| @CollectionLayout( |
| describedAs = "Todo items to be completed before this one" |
| ) |
| @Getter @Setter |
| private SortedSet<ToDoItem> dependencies = ... |
| |
| }</code></pre> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="alternatives-3"><a class="anchor" href="#alternatives-3"></a>Alternatives</h3> |
| <div class="paragraph"> |
| <p>As an alternative to using the annotation, the dynamic <a href="../../../userguide/2.0.0-M3/fun/ui.html#object-layout" class="page">file-based layout</a> can be used instead.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="hidden"><a class="anchor" href="#hidden"></a><code>hidden()</code></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>The <code>hidden</code> attribute indicates where (in the UI) the collection should be hidden from the user.</p> |
| </div> |
| <div class="admonitionblock tip"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <i class="fa icon-tip" title="Tip"></i> |
| </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>It is also possible to use <a href="Collection.html#hidden" class="page"><code>@Collection#hidden</code></a> to hide an action at the domain layer.</p> |
| </div> |
| </td> |
| </tr> |
| </table> |
| </div> |
| <div class="paragraph"> |
| <p>For example:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">import lombok.Getter; |
| import lombok.Setter; |
| |
| public class ToDoItem { |
| |
| @CollectionLayout( |
| hidden=Where.EVERYWHERE |
| ) |
| @Getter @Setter |
| private SortedSet<ToDoItem> dependencies = ... |
| |
| }</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>The acceptable values for the <code>where</code> parameter are:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>Where.EVERYWHERE</code> or <code>Where.ANYWHERE</code></p> |
| <div class="paragraph"> |
| <p>The collection 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 collection should be hidden when displayed within an object form.</p> |
| </div> |
| </li> |
| <li> |
| <p><code>Where.NOWHERE</code></p> |
| <div class="paragraph"> |
| <p>The collection should not be hidden.</p> |
| </div> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The other values of the <code>Where</code> enum have no meaning for a collection.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="alternatives-4"><a class="anchor" href="#alternatives-4"></a>Alternatives</h3> |
| <div class="paragraph"> |
| <p>As an alternative to using the annotation, the dynamic <a href="../../../userguide/2.0.0-M3/fun/ui.html#object-layout" class="page">file-based layout</a> can be used instead.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="see-also-2"><a class="anchor" href="#see-also-2"></a>See also</h3> |
| <div class="paragraph"> |
| <p>This attribute can also be applied to:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><a href="ActionLayout.html#hidden" class="page">actions</a></p> |
| </li> |
| <li> |
| <p><a href="PropertyLayout.html#hidden" class="page">properties</a>.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="named"><a class="anchor" href="#named"></a><code>named()</code></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>The <code>named</code> attribute explicitly specifies the collection’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 attribute when the desired name cannot be used in Java source code. |
| Examples of that include a name that would be a reserved Java keyword (eg "package"), or a name that has punctuation, eg apostrophes.</p> |
| </div> |
| </td> |
| </tr> |
| </table> |
| </div> |
| <div class="paragraph"> |
| <p>By default the name is HTML escaped. |
| To allow HTML markup, set the related <code>namedEscaped</code> attribute to <code>false</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 { |
| @CollectionLayout( |
| named="Todo items that are <i>dependencies</i> of this item", |
| namedEscaped=false |
| ) |
| @Getter @Setter |
| private SortedSet<ToDoItem> dependencies = ... |
| |
| }</code></pre> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="alternatives-5"><a class="anchor" href="#alternatives-5"></a>Alternatives</h3> |
| <div class="paragraph"> |
| <p>As an alternative to using the annotation, the dynamic <a href="../../../userguide/2.0.0-M3/fun/ui.html#object-layout" class="page">file-based layout</a> can be used instead.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The framework also provides a separate, powerful mechanism for <a href="../../../userguide/2.0.0-M3/btb/i18n.html" class="page">internationalization</a>.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="see-also-3"><a class="anchor" href="#see-also-3"></a>See also</h3> |
| <div class="paragraph"> |
| <p>This attribute can also be specified for:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><a href="ActionLayout.html#named" class="page">actions</a></p> |
| </li> |
| <li> |
| <p><a href="PropertyLayout.html#named" class="page">properties</a></p> |
| </li> |
| <li> |
| <p><a href="ParameterLayout.html#named" class="page">parameters</a></p> |
| </li> |
| <li> |
| <p><a href="DomainObjectLayout.html#named" class="page">domain objects</a></p> |
| </li> |
| <li> |
| <p><a href="DomainServiceLayout.html#named" class="page">domain services</a>.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="paged"><a class="anchor" href="#paged"></a><code>paged()</code></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>r |
| :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. <a href="http://www.apache.org/licenses/LICENSE-2.0" class="bare">http://www.apache.org/licenses/LICENSE-2.0</a> . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. |
| :page-partial:</p> |
| </div> |
| <div class="paragraph"> |
| <p>The <code>paged</code> attribute specifies the number of rows to display in a (parented) collection.</p> |
| </div> |
| <div class="admonitionblock warning"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <i class="fa icon-warning" title="Warning"></i> |
| </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>The <a href="../../../vro/2.0.0-M3/about.html" class="page">RestfulObjects viewer</a> currently does not support paging. |
| The <a href="../../../vw/2.0.0-M3/about.html" class="page">Wicket viewer</a> <em>does</em> support paging, but note that the paging is performed client-side rather than server-side.</p> |
| </div> |
| <div class="paragraph"> |
| <p>We therefore recommend that large collections should instead be modelled as actions (to allow filtering to be applied to limit the number of rows).</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 Order { |
| |
| @CollectionLayout(paged=15) |
| @Getter @Setter |
| private SortedSet<OrderLine> details = ... |
| |
| }</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>It is also possible to specify a global default for the page size of parented collections, using the <a href="../config/sections/isis.applib.html#isis.applib.annotation.collection-layout.paged" class="page"><code>isis.applib.annotation.collection-layout.paged</code></a> configuration property.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="alternatives-6"><a class="anchor" href="#alternatives-6"></a>Alternatives</h3> |
| <div class="paragraph"> |
| <p>As an alternative to using the annotation, the dynamic <a href="../../../userguide/2.0.0-M3/fun/ui.html#object-layout" class="page">file-based layout</a> can be used instead.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="see-also-4"><a class="anchor" href="#see-also-4"></a>See also</h3> |
| <div class="paragraph"> |
| <p>This attribute can also be applied to:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><a href="DomainObjectLayout.html#paged" class="page">domain objects</a></p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="sortedBy"><a class="anchor" href="#sortedBy"></a><code>sortedBy()</code></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>The <code>sortedBy</code> attribute specifies that the collection be ordered using the specified comparator, rather than the natural ordering of the entity (as would usually 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 ToDoItem implements Comparable<ToDoItem> { <i class="conum" data-value="1"></i><b>(1)</b> |
| |
| public static class DescriptionComparator <i class="conum" data-value="2"></i><b>(2)</b> |
| implements Comparator<ToDoItem> { |
| @Override |
| public int compare(ToDoItem o1, ToDoItem o2) { |
| return Comparator.comparing(ToDoItem::getDescription) |
| .compare(o1, o2); |
| } |
| } |
| |
| @CollectionLayout(sortedBy=DependenciesComparator.class) <i class="conum" data-value="3"></i><b>(3)</b> |
| @Getter @Setter |
| private SortedSet<ToDoItem> dependencies = ... |
| |
| }</code></pre> |
| </div> |
| </div> |
| <div class="colist arabic"> |
| <table> |
| <tr> |
| <td><i class="conum" data-value="1"></i><b>1</b></td> |
| <td>the class has a natural ordering (implementation not shown)</td> |
| </tr> |
| <tr> |
| <td><i class="conum" data-value="2"></i><b>2</b></td> |
| <td>declaration of an alternative comparator class, using the object’s <code>description</code> property</td> |
| </tr> |
| <tr> |
| <td><i class="conum" data-value="3"></i><b>3</b></td> |
| <td>ordering of the collection defined as being by this comparator</td> |
| </tr> |
| </table> |
| </div> |
| <div class="paragraph"> |
| <p>When the <code>dependencies</code> collection is rendered, the elements are sorted by the <code>description</code> property first:</p> |
| </div> |
| <div class="imageblock"> |
| <div class="content"> |
| <a class="image" href="_images/reference-annotations/CollectionLayout/sortedby-dependencies.png"><img src="_images/reference-annotations/CollectionLayout/sortedby-dependencies.png" alt="sortedby dependencies" width="720px"></a> |
| </div> |
| </div> |
| <div class="admonitionblock note"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <i class="fa icon-note" title="Note"></i> |
| </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>Note that this screenshot shows an earlier version of the <a href="../../../vw/2.0.0-M3/about.html" class="page">Wicket viewer</a> UI (specifically, pre 1.8.0).</p> |
| </div> |
| </td> |
| </tr> |
| </table> |
| </div> |
| <div class="sect2"> |
| <h3 id="alternatives-7"><a class="anchor" href="#alternatives-7"></a>Alternatives</h3> |
| <div class="paragraph"> |
| <p>As an alternative to using the annotation, the dynamic <a href="../../../userguide/2.0.0-M3/fun/ui.html#object-layout" class="page">file-based layout</a> can be used instead.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| </article> |
| <aside class="article-aside toc" 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~2020 The Apache Software Foundation, licensed under the Apache License, v2.0. |
| <br/> |
| Apache, the Apache feather logo, Apache Isis, and the Apache Isis project logo are all trademarks of The Apache Software Foundation. |
| </p> |
| </div> |
| <div class="revision"> |
| <p>Revision: SNAPSHOT</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> |
| </body> |
| </html> |