Bug fixes, including:
@SystemLevel annotation now has propagate attribute which is false by default. It
means that System Level feature is propagated only to extending subclasses (derived entities with
the @Extend annotation).
If propagate is true, all subclasses of the entity become System Level.detached flag is set to true only after all BeforeDetachEntityListeners have
been executed.EmailValidator.SocketException handling in web client.DsContext now calls CommitListeners of all child contexts.h2 style name in Halo theme.dateFormat attribute with the msg:// prefix, the format
value will be retrieved from the screen's message pack. Previously the main message pack was used.timeFormat attribute was added to the TimeField component.PopupButton component now supports keyboard.Link component can contain an icon.Shift-Backspace keyboard shortcut. This combination
can be changed in the cuba.gui.filterSelectShortcut application property.cuba.manualScreenSettingsSaving application property is set to true, screens will not save
their settings automatically on close. In this mode, a user can save or reset settings using the context menu
which appears on clicking a screen tab or a dialog window caption.timeFormat attribute was added to the TimeField component. It can contain either
a format value, or a message pack key.setCursorPosition() method was added to TextField and TextArea
components.This is the first public release of platform version 5.4. All significant changes from version 5.3 are listed below.
DataWorker is deprecated; DataService became an internal mechanism and should not be
used in the application code.
DatatypeFormatter bean was added for convenient locale-dependent formatting of common data types.
restapi-instance-v2.xsd schema file.
To switch back to the previous format, set
cuba.rest.apiVersion
application property to value 1.
FilterDelegate bean and can be overridden in
application projects.
AbstractAction.
link - if true, a link is used instead of a PickerField to display the
referenced entity.
linkScreen - defines a screen which is opened by clicking on the link.
linkScreenOpenType - defines a screen opening type.
linkInvoke - if defined, a given controller method is invoked instead of opening a screen.
link attribute can also be set to true for a column of a simple type. In this case, the
link opens the main entity editor. This can be used to simplify navigation: users can open the editor screen by
clicking on some key attribute of the entity.
TextField, LookupField, LookupPickerField and
SearchPickerField components. It sets a string which is displayed in the field when its value is
empty.
setItemClickAction() method was added for the
Tree
component.
It sets an Action
to be invoked when a user double-clicks a tree item.
Field interface (TextField, etc.), now allows to set
its value programmatically by the setValue() method even if the editable property is
false.
cuba.web.availableAppThemes application property is not used anymore. The information about themes
is obtained only from the
cuba.themeConfig
property.
ClientConfiguration interface was added, extending Configuration on the client tier.
This interface defines getConfigCached() method to obtain config proxies caching DB-stored
properties
to minimize server invocations. The standard getConfig() method returns non-caching proxies.
The platform uses getConfigCached() when injects configs into screen controllers and
getConfig() for injection into regular Spring beans. If you use ClientConfiguration to
obtain a config, you can choose which proxy you need: caching or non-caching.
ExportFormat class now allows to create new instances for handling arbitrary file types.
Previously the class was an enumeration.
AppWindow.onHistoryBackPerformed() method.
cuba.gui.loginToClient specific
permission
restricts ability to login to web and desktop clients. This can be useful if some users should be able to login
to a web portal but not to the internal web or desktop client.
CubaThreadPoolTaskScheduler now starts scheduled methods only after
AppContext
is initialized and all AppContext.Listeners are notified. Therefore, you do not need to add
AppContext.isStarted() check at the beginning of the invoked methods.
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
build.gradle:
configure(guiModule) {
dependencies {
...
compile("com.haulmont.fts:fts-gui:$cubaVersion")
}
...
configure(webModule) {
...
task deploy(...) {
...
appJars(..., 'fts-gui')
*.xml files by searching
http://schemas.haulmont.com/cuba/5.3/ string and replacing it with
http://schemas.haulmont.com/cuba/5.4/.
updateDb Gradle task.