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.activitylogview |
al/activitylog |
| Extractors | com.appjars.activitylog.url.extractorsview |
al/extractors |
| Extractors — create | com.appjars.activitylog.url.extractorsview-create |
al/extractors/create |
| Extractors — edit | com.appjars.activitylog.url.extractorsview-edit |
al/extractors/edit |
| Removers | com.appjars.activitylog.url.removersview |
al/removers |
| Removers — create | com.appjars.activitylog.url.removersview-create |
al/removers/create |
| Removers — edit | com.appjars.activitylog.url.removersview-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 com.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.
The table below lists the configurable segment properties, their default segment values, and the full default path each one produces:
| Segment property | Default segment | Default full path |
|---|---|---|
com.appjars.issuetracker.url.views.issues-list |
issues |
it/issues |
com.appjars.issuetracker.url.views.trackers-list |
trackers |
it/trackers |
com.appjars.issuetracker.url.views.issuestatus-list |
issuestatuses |
it/issuestatuses |
com.appjars.issuetracker.url.views.enumerations-list |
enumerations |
it/enumerations |
com.appjars.issuetracker.url.views.roles-list |
roles |
it/roles |
com.appjars.issuetracker.url.views.users-list |
users |
it/users |
com.appjars.issuetracker.url.views.workflows-edit |
workflows |
it/workflows |
com.appjars.issuetracker.url.views.custom-fields |
custom_fields |
it/custom_fields |
com.appjars.issuetracker.url.views.groups-list |
groups |
it/groups |
com.appjars.issuetracker.url.views.group-view |
groups/:id |
it/groups/:id |
com.appjars.issuetracker.url.views.groups-edit |
groups/:id/edit |
it/groups/:id/edit |
com.appjars.issuetracker.url.views.projects-list |
projects |
it/projects |
com.appjars.issuetracker.url.views.time-entries |
time_entries |
it/time_entries |
com.appjars.issuetracker.url.views.my-page |
my/page |
it/my/page |
com.appjars.issuetracker.url.views.my-account |
my/account |
it/my/account |
com.appjars.issuetracker.url.views.settings |
settings |
it/settings |
com.appjars.issuetracker.url.views.activity |
activity |
it/activity |
com.appjars.issuetracker.url.views.search |
search |
it/search |
com.appjars.issuetracker.url.views.searchproject |
projects/:identifier?/search |
it/projects/:identifier?/search |
com.appjars.issuetracker.url.views.version |
versions/:id |
it/versions/:id |
com.appjars.issuetracker.url.views.versions-create |
projects/:identifier/versions/new |
it/projects/:identifier/versions/new |
com.appjars.issuetracker.url.views.versions-edit |
versions/:id/edit |
it/versions/:id/edit |
com.appjars.issuetracker.url.views.gantt |
issues/gantt |
it/issues/gantt |
com.appjars.issuetracker.url.views.time-entries-create-by-issue |
issues/:issueId/time_entries/new |
it/issues/:issueId/time_entries/new |
Routes derived from a parent segment — such as issue detail (it/issues/:id), project overview (it/projects/:identifier), or per-project time entries (it/projects/:identifier/time_entries) — are built by appending internal suffix segments to their parent. Overriding a parent segment automatically shifts all routes that descend from it.
Note
The root segment property has an empty key suffix, making the full property key com.appjars.issuetracker.url.views. (with a trailing dot). In a .properties file this is written as:
com.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 |