Orbeon Forms
Search
⌃K

Detailed behavior

See also:

Philosophy of error handling

  • Upon initial page load:
    • It is acceptable if not desirable to immediately show a static error, as the user hasn't yet interacted with the page.
    • For dynamic XForms, it is better not to show an error immediately (case of Form Builder and xxf:dynamic).
  • Upon subsequent interactions:
    • The XForms engine attempts to recover from errors occurring with XPath expressions, bindings, and actions.

How the XForms engine recovers from errors

  1. 1.
    For control bindings, model bindings, values, variables
    • Upon XPath errors, a default value is chosen:
      • the empty sequence for bindings and variable values
      • the empty string for string values
    • Upon binding errors with the bind attribute
      • the binding resolves to the empty sequence
    • Upon binding errors with the model attribute
      • the model doesn't change, as if the model attribute was missing
  2. 2.
    For XPath MIP values
    • Upon XPath errors for calculate and xxforms:default
      • the destination value is set to blank
      • if xxforms:expose-xpath-types="true" and there is an error accessing a typed value
        • the error is logged at debug level
      • else if xxforms:expose-xpath-types="false" or there is any other dynamic error
        • xxforms-xpath-error is dispatched to the model
    • Upon XPath errors for other MIPs
      • the MIP is not modified, as if the attribute specifying the property was missing
      • xxforms-xpath-error is dispatched to the model
    • Upon binding errors with complex or readonly content (calculate or xxforms:default only)
      • the instance value is not modified
      • xxforms-binding-error is dispatched to the model
  3. 3.
    For the submission instance and xxforms:instance attributes
    • Upon incorrect instance id
      • xforms-submit-error is dispatched (as in the case of a target error with the targetref attribute)
    • Upon binding errors with complex or readonly content
      • xforms-submit-error is dispatched
  4. 4.
    For actions
    • Any error taking place during action processing stops the outermost action handler, including:
      • XPath errors
      • binding errors with the bind or model attribute
      • binding errors with complex or readonly content
      • missing attributes or unsupported attribute values on action elements
    • xxforms-action-error event is dispatched to observer of the action
    • NOTE: Some actions silently ignore some error conditions, including:
      • <setvalue> pointing to an empty sequence or to an atomic item (such as a string) instead of a node
      • <delete> with an empty sequence or an empty overridden context
      • <insert> with an empty or non-element insert context, an empty overridden context, or an empty origin
      • actions with AVTs evaluating to the empty sequence
    • <dispatch>, <send>, <setfocus>, <setindex>, <toggle> when the target element is not found
In all cases except typed value access XPath errors on MIPs:
  • errors are logged at debug level [warning level until Orbeon Forms 4.8]
  • errors are added to a list of errors to send to the client
  • the client shows an error dialog which the user can discard (when enabled via properties)
In the case of typed value access XPath errors on MIPs:
  • errors are logged at debug level

Events dispatched

The xxforms-xpath-error event is dispatched:
  • to the model, upon encountering an XPath error during processing of an XPath model item property (MIP)
The xxforms-binding-error event is dispatched:
  • to the model, if a calculate or xxforms:default MIP points to complex or readonly content
  • to the control, if an attempt to store an external value (control value, filename, metadata or size) on a control to a node with complex or readonly content takes place
    NOTE: This should ideally not occur as the value control binding should not point to complex content, and readonly is disallowed.
The xxforms-action-error event is dispatched:
  • to the observer of the action, upon encountering an error during processing of an action
  • this includes: controls, model, instance, and submission
NOTE: The fatal, non-cancelable XForms xforms-compute-exception and xforms-binding-exception are no longer dispatched by Orbeon Forms.

Reference: kinds of errors that can occur

  • XForms errors
    • static XPath errors
      • some are detected during the static analysis phase (PE)
      • some expressions are not analyzed during static analysis of the page, and so can occur at runtime
    • dynamic XPath errors
    • binding errors with the bind or model attributes, e.g.: bind="foobar" where id foobar doesn't exist
      • some are detected during the static analysis phase
      • some are not analyzed during static analysis of the page, and so can occur at runtime
    • binding errors with complex or readonly content
      • XForms disallows setting the value of an element with complex content
      • XForms disallows setting the value of a readonly element or attribute
  • errors outside of XForms, for example:
    • in the XPL (XML pipeline) engine
    • in the controller
  • other server errors:
    • major errors such as the server running out of resources
    • server bugs!