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 BeforeDetachEntityListener
s have
been executed.EmailValidator
.SocketException
handling in web client.DsContext
now calls CommitListener
s 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.Listener
s 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.