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-createor-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 |