Skip to content

Configuring View Route Paths

Each AppJar registers its views as Vaadin routes at application startup. All view paths have built-in defaults but can be overridden by the host application through Spring application properties.

Mechanism

Each AppJar's RouteConfigurer declares its view paths as Spring @Value placeholders with built-in defaults, using the ${key:default} syntax. When the application starts, Spring resolves each placeholder: if the property key is defined in application.properties, application.yml, or any other property source, its value is used as the route path; otherwise the default is used. Vaadin then registers the resolved value as the view's URL.

Overriding a path

Add the property to application.properties:

com.appjars.usermanager.url.users=admin/people

Or equivalently in application.yml:

com:
  appjars:
    usermanager:
      url:
        users: admin/people

Omitting a property keeps the documented default. The application must restart for path changes to take effect.

If application code navigates to an AppJar view using the Vaadin API, update those calls to reflect any overridden path:

UI.getCurrent().navigate("admin/people");

Property reference by AppJar

Activity Log

View Property key Default path
Activity Log com.appjars.activitylog.url.activitylog al/activitylog
Extractors com.appjars.activitylog.url.extractors al/extractors
Extractors — create com.appjars.activitylog.url.extractors-create al/extractors/create
Extractors — edit com.appjars.activitylog.url.extractors-edit al/extractors/edit
Removers com.appjars.activitylog.url.removers al/removers
Removers — create com.appjars.activitylog.url.removers-create al/removers/create
Removers — edit com.appjars.activitylog.url.removers-edit al/removers/edit
Log Viewer list com.appjars.activitylog.url.logviewer al/logviewer
Log Viewer — create com.appjars.activitylog.url.logviewer-create al/logviewer/create
Log Viewer — edit com.appjars.activitylog.url.logviewer-edit al/logviewer/edit

AI Support

View Property key Default path
Documents com.appjars.aisupport.url.views.documentsview as/documents
Assistants com.appjars.aisupport.url.views.assistants as/assistants
Chat com.appjars.aisupport.url.views.chat as/chat
Prompts com.appjars.aisupport.url.views.prompts as/prompts
LLMs com.appjars.aisupport.url.views.llms as/llms
LLM Inspector com.appjars.aisupport.url.views.inspector as/inspector
Categories com.appjars.aisupport.url.views.categories as/categories
Channels com.appjars.aisupport.url.views.channels as/channels

The webhook endpoints (api/webhooks/whatsapp, api/webhooks/facebook, api/webhooks/instagram) are hardcoded and cannot be overridden through application properties.

Configuration Manager

View Property key Default path
System Configurations com.appjars.configurationmanager.url.views.systemconfigurationsview cfg/system
User Configurations com.appjars.configurationmanager.url.views.usersconfigurationsview cfg/user/list
My Configurations com.appjars.configurationmanager.url.views.myconfigurationsview cfg/user/my-configs

Data Query

View Property key Default path
Query Definitions com.appjars.dataquery.url.admin.queries data-query/admin/queries
Query Definition — create com.appjars.dataquery.url.admin.queries-create data-query/admin/queries/create
Query Definition — edit com.appjars.dataquery.url.admin.queries-edit data-query/admin/queries/edit
Query Categories com.appjars.dataquery.url.admin.categories data-query/admin/categories
Dashboards com.appjars.dataquery.url.admin.dashboards data-query/admin/dashboards
Dashboard — create com.appjars.dataquery.url.admin.dashboards-create data-query/admin/dashboards/create
Dashboard — edit com.appjars.dataquery.url.admin.dashboards-edit data-query/admin/dashboards/edit
Report view com.appjars.dataquery.url.report data-query/report
Report Designer com.appjars.dataquery.url.report-designer data-query/report-designer
Dashboard runtime view com.appjars.dataquery.url.dashboard data-query/dashboards

Note

The last three properties are base paths: the report view and the report designer append the query key as a route parameter, and the dashboard runtime view appends the dashboard slug. A dashboard's address therefore follows its slug, and no route is ever registered at runtime.

Dynamic Menu

Note

Dynamic Menu uses a different property prefix than most other AppJars: com.appjars.configurations.dynamicmenu.*.

View Property key Default path
Menu Items com.appjars.configurations.dynamicmenu.items-view-route dm/list

Email Manager

View Property key Default path
Email list com.appjars.emailmanager.url.views.emailcrudview em/list

I18N Manager

Note

I18N Manager uses a different property prefix than most other AppJars: com.appjars.configurations.i18nmanager.*.

View Property key Default path
Languages com.appjars.configurations.i18nmanager.languages-route i18n/languages
Translation Items com.appjars.configurations.i18nmanager.translation-items-route i18n/items
Translation Items (with language parameter) com.appjars.configurations.i18nmanager.translation-items-parameter-route i18n/items/:lang

Issue Tracker

Issue Tracker uses a segment-based route configuration rather than one property per complete path. Each property in the appjars.issuetracker.url.views.* namespace controls one URL segment; full paths are formed by composing parent and child segments at startup.

The root segment (default it) is a prefix shared by every Issue Tracker route. Overriding it changes the base prefix for all routes simultaneously.

Segment names follow two conventions:

  • A key starting with - (for example -create or -edit) is a suffix: it is appended to one or more parent paths, so a single property can affect several routes.
  • A key whose default is :id (or :identifier) is a parameter placeholder rather than a literal segment.

The table below lists every segment property, its default segment value, and the full default path or paths it produces:

Segment property Default segment Default full path
appjars.issuetracker.url.views. it Prefix of every route below
appjars.issuetracker.url.views.issuestatus-list issuestatuses it/issuestatuses
appjars.issuetracker.url.views.trackers-list trackers it/trackers
appjars.issuetracker.url.views.enumerations-list enumerations it/enumerations
appjars.issuetracker.url.views.roles-list roles it/roles
appjars.issuetracker.url.views.-permissions permissions it/roles/permissions, it/workflows/permissions
appjars.issuetracker.url.views.users-list users it/users
appjars.issuetracker.url.views.-create new it/users/new, it/custom_fields/new, it/issues/new, it/projects/:identifier/issues/new, it/time_entries/new, it/projects/:identifier/time_entries/new
appjars.issuetracker.url.views.-profile :id it/users/:id
appjars.issuetracker.url.views.-edit edit it/users/:id/edit, it/workflows/edit, it/issues/:id/edit
appjars.issuetracker.url.views.idedit :id/edit it/custom_fields/:id/edit, it/time_entries/:id/edit
appjars.issuetracker.url.views.-delete delete it/users/:id/delete
appjars.issuetracker.url.views.workflows-edit workflows it/workflows
appjars.issuetracker.url.views.custom-fields custom_fields it/custom_fields
appjars.issuetracker.url.views.groups-list groups it/groups
appjars.issuetracker.url.views.group-view groups/:id it/groups/:id
appjars.issuetracker.url.views.groups-edit groups/:id/edit it/groups/:id/edit
appjars.issuetracker.url.views.issues-list issues it/issues
appjars.issuetracker.url.views.-import import it/issues/import, it/time_entries/import
appjars.issuetracker.url.views.-bulkedit-issues bulk_edit it/issues/bulk_edit
appjars.issuetracker.url.views.-detail :id it/issues/:id
appjars.issuetracker.url.views.-copy copy it/issues/:id/copy
appjars.issuetracker.url.views.projects-list projects it/projects, it/projects/create
appjars.issuetracker.url.views.project :identifier it/projects/:identifier
appjars.issuetracker.url.views.project-create admin/projects/create Not used by any route (see the note below)
appjars.issuetracker.url.views.-settings settings/:tab? it/projects/:identifier/settings/:tab?
appjars.issuetracker.url.views.-activity activity it/projects/:identifier/activity
appjars.issuetracker.url.views.issues-by-project issues it/projects/:identifier/issues
appjars.issuetracker.url.views.-report report it/projects/:identifier/issues/report, it/time_entries/report, it/projects/:identifier/time_entries/report
appjars.issuetracker.url.views.time-entries time_entries it/time_entries
appjars.issuetracker.url.views.-bulkedit-time-entries bulk_edit it/time_entries/bulk_edit
appjars.issuetracker.url.views.time-entries-by-project time_entries it/projects/:identifier/time_entries
appjars.issuetracker.url.views.time-entries-create-by-issue issues/:issueId/time_entries/new it/issues/:issueId/time_entries/new
appjars.issuetracker.url.views.my-page my/page it/my/page
appjars.issuetracker.url.views.my-account my/account it/my/account
appjars.issuetracker.url.views.settings settings it/settings
appjars.issuetracker.url.views.activity activity it/activity
appjars.issuetracker.url.views.search search it/search
appjars.issuetracker.url.views.searchproject projects/:identifier?/search it/projects/:identifier?/search
appjars.issuetracker.url.views.-search search Not used by any route (see the note below)
appjars.issuetracker.url.views.versions-create projects/:identifier/versions/new it/projects/:identifier/versions/new
appjars.issuetracker.url.views.versions-edit versions/:id/edit it/versions/:id/edit
appjars.issuetracker.url.views.-roadmap roadmap it/projects/:identifier/roadmap
appjars.issuetracker.url.views.version versions/:id it/versions/:id
appjars.issuetracker.url.views.gantt issues/gantt it/issues/gantt
appjars.issuetracker.url.views.gantt-by-project issues/gantt it/projects/:identifier/issues/gantt
appjars.issuetracker.url.views.attachments attachments/:id/:filename? it/attachments/:id/:filename?

Overriding a segment changes every route built from it. For example, overriding issues-list moves the issues list together with the issue detail view (it/issues/:id) and the new issue, edit, copy, import and bulk edit views. The project creation route is always the projects-list path followed by /create.

Note

project-create and -search are defined but not used to build any route in this version, so overriding them has no effect. Project-scoped search is controlled by searchproject.

settings accepts either a bare segment or a value written as a full path under the root (for example it/settings); in the latter case the root is stripped, so the view is still served under the root.

Give each property an explicit value rather than leaving it blank: a blank value overrides the default with an empty string.

Note

The root segment property has an empty key suffix, making the full property key appjars.issuetracker.url.views. (with a trailing dot). In a .properties file this is written as:

appjars.issuetracker.url.views.=myprefix

Representing an empty key in YAML requires syntax that is not supported by all YAML parsers. Use .properties format for this specific override.

Process Manager

View Property key Default path
Processes com.appjars.processmanager.url.process pm/process

User Manager

View Property key Default path
Users com.appjars.usermanager.url.users um/users
User — edit com.appjars.usermanager.url.users-edit um/users/edit
User — create com.appjars.usermanager.url.users-create um/users/create
Groups com.appjars.usermanager.url.groups um/groups
Group — edit com.appjars.usermanager.url.groups-edit um/groups/edit
Group — create com.appjars.usermanager.url.groups-create um/groups/create
Roles com.appjars.usermanager.url.roles um/roles
Profile com.appjars.usermanager.url.profile um/profile
Access Rules com.appjars.usermanager.url.access-rules um/access-rules
Views com.appjars.usermanager.url.views um/views
Password reset link com.appjars.usermanager.url.password-change-link um/users/password-reset
User registration link com.appjars.usermanager.url.user-registration-link um/users/register

User Profile

View Property key Default path
My Profile com.appjars.userprofile.url.profile up/profile
Profiles list com.appjars.userprofile.url.profile-list up/profile-list