CoreMedia Studio has built-in support for server-side validation of content objects. You can leverage the validation framework for your own (non CMS) data resources, but for content objects managed in the CoreMedia Content Server, the framework already offers convenient support (see Section 5.4.2, “Content” for a general description of the Studio Content API.)
Server-side validation always works on values already saved (persisted) - in other words, a
validator will never prevent the user from saving data, so that the risk of data loss is
minimal. You can however set up Studio to prevent the
user from approving or checking in documents that have validation issues with severity
ERROR
(see Section 7.15.1.4, “Tying Document Validation to Editor Actions” for details on how to
configure this).
The client can ask the server to compute issues of an
entity (most commonly Content), where they become accessible as a
com.coremedia.ui.data.validation.Issues
object. Once received, the client can
do things like highlight a property field that contains an invalid value, or open a dialog.
Studio offers built-in support for marking standard
property fields invalid, and offers the user a convenient interface to step through and
correct detected validation issues in one go.
The issues object provides access to individual Issue
objects through a number
of methods:
getAll()
returns all issues of the entity in a single array.getByProperty()
returns a sub bean whose properties match the properties of the entity. Each property contains an array of issues that affect exactly that property.getGlobal()
returns an array of issues that do not affect a specific property, but that describe the state of the entity as a whole. A common example for this is a validator that checks for the correct folder path of a document - you could set up a validator to raise aWARNING
when a document is created in a wrong folder, for example.
An issue links back to its entity by means of the entity
property. The
severity
property indicates a level of "INFO"
,
"WARN"
, and "ERROR"
. You can freely define the
severity level for any validator.
The property property
stores the name of the property whose value causes the
issue. If null
, this indicates a global issue that affects the entity as a
whole, rather than one of its properties. In the property code
, each issue
stores a string identifier indicating the type of issue detected. Applications are expected
to localize this identifier as needed. Depending on the code, the array property
arguments
might store additional data in a specific layout.
The issue code identifiers depend on the type of entity that has been validated. In fact, each server-side validator may introduce its own code and you have to refer to the documentation of the validators for details. Some validators allow you to configure the error code that they report. In custom validators, you can also pass on additional ("runtime") information describing the error in more detail, and use this additional information to present user-friendly descriptions of the problem in the UI. See Section 7.15.1, “Validators” for details.