What’s new in Jspresso 5.2.0

Besides tons of bug fix, here is a list of new features added to Jspresso 5.2.0, the next minor version of the Jspresso 5 branch.

Jspresso Mobile

  • Mobile action view (mobileActionView keyword)
  • Mobile card sections in composite pages
  • All mobile views as sections in composite pages
  • Property-bound dynamic titles for pages
  • Mobile applications won’t display the workspace page for single-workspace single-module applications

Jspresso Desktop

  • Implement single-click edition mode for tables (singleClickEdit:true)
  • Writability gates on tables can now be collection-based (suffixed by _cb) which allows to act on table rows writability without having to install a gate on each and every column property view
  • Better look-and-feel for pivot table header labels that do not truncate anymore when spanning multiple columns
  • List views now support cumulative selection
  • New TITLED_ACTIONS border type in order to install the main view action map next to the panel title and save vertical space
  • Formatted fields are more lenient to input (percent fields, date-time fields, ..)
  • New selectionAction triggered by a simple click on Pivot tables which allows for master-detail like UIs. Pivot table action is still triggered on double-clicks
  • Tab view hiddenWhenDisabled:true allows to hide disabled tabs instead of making them un-selectable
  • LOV actions are now more keyboard-friendly, e.g. auto select first result, validation on Enter keypress, …
  • Property-bound dynamic names for TITLED views
  • Allow to dynamically bind a module icon at runtime using a memory resource URL
  • Image property views are now rendered as images in table cells
  • A module can now be customised not to display its dirty marker independently of it object(s) dirty state
  • LOV actions can now be used to directly create new referenced entities (lovActionWithCreate)
  • New theme and themes improvements
  • New focusGained and focusLost actions
  • Binary-based actions now support a modelPath property to act on any property of the underlying model which allows to place the binary actions anywhere in the UI
  • Filter modules now support includeDetail:true property to introduce a new tab for browsing the module objects in a single-record detail view which allows for more compact UIs
  • Repeatable scheduled actions for implementing monitoring UIs
  • You can now dynamically change the application name that is reflected in the UI
  • Table columns visibility is saved across user sessions
  • New tabSelectionAction that is triggered when a tab selection changes


  • Super extra new IntelliJ Jspresso plugin
  • Special | character to search for complete words in filters
  • Collection property based gates are now closed for empty collections, not only null
  • New lifecycle interceptor onReloadTransient
  • New interface method reset() on extensions to manage extension internal state when an entity is reloaded
  • Service interface methods can now be annotated with lifecycle annotations (@OnCreate, @OnPersist, …) in order to be triggered during the different entity lifecycle phases
  • SJS now supports inline custom
  • Allow to use explicit readOnly:false to override read-only state of an enclosing view
  • Lots of improvements on map views: paths binding, segment styles, marker icons, …
  • Properties now support an alternativeSortProperty in order to use another property to sort them
  • New entity state inner object instead of map to store entity state that allows to put breakpoints when debugging
  • LovAction, QueryFilterModuleAction and FilterableBeanCollectionModule now directly support queryComponentRefiner, criteriaRefiner and criteriaFactory customisations instead of digging into the hierarchy to find and override the query backend action
  • New Java enumerations generated for enum properties in entities and components
  • New SAML integration for Single-Sign-On
  • New easy to implement action monitoring plugin for application usage statistics, performance, …
  • Support for SVG images as icons for better rendering
  • Support the JAAS logging configuration for web-services
  • New password reset action and support for one-time passwords
  • Allow to navigate the action context using view permIds instead of view path which is far more robust
  • Components and their extensions now implement a common interface which allows for more robust code and less dead code
  • @DependsOnGroup for grouping multiple @DependsOn annotations
  • Introduced a queryTimeout property on query components in order to support a JDBC query timeout
  • New staticLabel property view for displaying a static text in forms without defining a dumb computed property on the model
  • New filterOnly attribute on properties allowing to declare properties that are ignored in the model but only used in filters which prevents from declaring dumb computed properties to enhance filters
  • The frontend controller is now aware of the type and version of the client
  • Action views now support an action list instead of only a single action
  • Conjunction & special character for filters
  • New truncate:true attribute on textual properties to automatically truncate properties if too long
  • Actions are now given a chance to handle unexpected exception before letting te exception raise to the controller
  • A new property hideActionWhenDisabled:true is available on actionMap and actionList. A new property hiddenWhenDisabled:true is available on action which allows to easily implement workflow UIs
  • Various security improvements to prevent attacks (XSS, SQL injection, …)
  • HTML properties can include hyperlinks in their contents that trigger the bound property action, e.g. <a href='executeAction("param")'>link value</a>
  • New repeater collection view
  • Collections direct manipulations auto-magically redirect to the corresponding owner add/remove methods
Categories: Uncategorized

Leave a Reply