Orbeon Forms
  • Getting started
  • Installation
    • Logging
    • Configuration banner
    • Docker
    • Azure
    • Tomcat
    • WildFly
    • WebSphere
    • WebLogic
    • GlassFish
    • Caches
    • Replication
    • Upgrading
  • Configuration
    • Properties
      • General
        • HTTP client
      • Form Runner
        • Detail page
          • Attachments
          • Email
          • PDF
          • Table of contents
        • Persistence
        • Summary page
      • Form Builder
      • XForms
    • Advanced
      • Workflows
      • Session management
      • State handling
      • Client-side error handling
      • Clustering and High Availability
      • Configuring a Form Runner eXist database
      • Creating a production WAR
      • Environments
      • JavaScript and CSS assets
      • Limiter filter
      • Run modes
      • Security
        • Content-Security-Policy header
      • SAP Hybris Module
      • XForms logging
    • Troubleshooting
      • Troubleshooting with the orbeon.log
      • Memory and threads
      • Relational database logging
      • Misc
  • Form Builder
    • Form settings
      • Time window
    • Form editor
      • Form area
      • Toolbox
      • Buttons bar
      • Control settings
      • Dependent fields and sections
      • Validation
      • Choices editor
      • Publishing
      • Cut, copy and paste
      • Section and grid settings
      • Section settings
      • Grid settings
      • Quick control search
      • Repeat settings
      • Repeated grids
      • Undo and redo
      • Keyboard shortcuts
    • Formulas
      • Examples of formulas
      • Formulas inspector
      • Formulas console
    • Summary page
    • Form localization
    • Advanced
      • Edit source
      • Services and actions
        • HTTP services
        • Database services
        • Simple Actions
        • Action Syntax
        • Action Syntax examples
        • Synchronizing repeated content
      • Testing a form in web mode
      • Testing PDF production
      • Testing offline functionality
      • Email settings
      • Field-level encryption
      • Messages
      • Section templates
      • Template syntax
      • XML Schemas support
      • Extensibility
        • Extension API
        • Integration
        • Toolbox component metadata
  • Form Runner
    • Overview
      • Terminology
    • Pages
      • Landing page
      • Published Forms page
      • Forms Admin page
      • Summary page
    • Components
      • Alert dialog
      • Attachment
      • Autocomplete
      • Captcha
      • Character counter
      • Checkbox input
      • Currency
      • Date
      • Dropdown date
      • Static and dynamic dropdown
      • Error summary
      • Grid
      • Handwritten signature
      • Hidden field
      • Image
      • Image annotation
      • Image attachment
      • Number
      • Open selection
      • Repeater
      • Formatted Text / Rich Text Editor
      • Section
      • Single-selection tree
      • Source code editor
      • Time
      • US phone
      • US state
      • Video
      • Video attachment
      • Wizard
      • XForms inspector
      • Yes/No answer
    • Features
      • Automatic calculations dependencies
      • Datasets
      • Excel and XML import
      • Excel and XML export
      • Summary page Excel Export
      • Form definitions and form data Zip Export
      • Purging historical data
      • Lease
      • Localization
      • Supported languages
      • Mobile support
      • Multitenancy
      • Form Runner navigation bar
      • PDF production
        • Automatic PDF
        • Automatic PDF header and footer configuration
        • PDF templates
      • Responsive design
      • Revision history
      • S3 storage
      • Simple data migration
      • TIFF production
      • Versioning
      • Wizard view
      • Workflow stage
    • Persistence
      • Using a relational database
      • Relational database schema
      • Purging old data using SQL
      • Auditing
      • Autosave
      • Database support
      • Flat view
    • Linking and embedding
      • Linking
      • Java Embedding API
      • JavaScript Embedding API
      • Liferay full portlet
      • Liferay proxy portlet
      • Securing Form Runner access
      • Form Runner offline embedding API
      • Angular component
      • React component
    • Access control and permissions
      • Users
      • Login & Logout
      • Deployed forms
      • Form fields
      • Editing forms
      • Owner and group member
      • Organizations
      • Scenarios
      • Token-based permissions
    • Styling
      • CSS
      • Grids CSS
      • Automatic PDF styling and CSS
    • APIs
      • Authentication of server-side service APIs
      • Persistence API
        • CRUD API
        • Search API
        • List form data attachments API
        • Form Metadata API
        • Lease API
        • Reindexing API
        • Caching
        • Versioning
        • Revision History API
        • Zip Export API
        • Custom persistence providers
      • Other APIs
        • Connection context API
        • Duplicate form data API
        • File scan API
        • Form Runner JavaScript API
        • Generate XML Schema API
        • PDF API
        • Publish form definition API
        • Run form in the background API
      • Data formats
        • Form data
        • Date and time
        • Form definition
    • Architecture and integration
      • Architecture
      • Access form data
      • Integration
    • Advanced
      • Buttons and processes
        • Simple process syntax
        • Core actions
        • Form Runner actions
          • Save action
          • Send action
          • Email action
        • XForms actions
        • Predefined buttons, processes and dialogs
        • Summary page buttons and processes
      • Custom dialogs/model logic
      • Services
      • Singleton form
      • Monitoring HTTP requests
  • XForms
    • Core
      • Attribute Value Templates (AVTs)
      • Binds
      • Validation
      • Variables
      • Keyboard focus
      • XForms JavaScript API
      • Error handling
        • Detailed behavior
      • Model-Bind variables
      • XForms 2.0 support
    • Events
      • Standard support
      • UI refresh events
      • Keyboard events
      • Extension events
      • Extension context information
      • Other event extensions
    • Actions
      • Repeat, insert and delete
      • Scripting actions
      • Extensions
    • Controls
      • Label, hint, help
      • Input
      • Output
      • Text area
      • Button
      • Upload
      • Dialog
    • Submission
      • Standard support
      • JSON support
      • Asynchronous submissions
      • Caching extension
      • Other submission extensions
    • XPath
      • Type annotations
      • Expression analysis
      • Tips
      • Compatibility
      • Standard functions
      • Maps and arrays Functions
      • Extension functions
        • Core functions
        • Utility functions
        • Model functions
        • Controls functions
        • XML functions
        • JSON functions
        • HTTP functions
        • Form Runner functions
        • Other functions
        • Deprecated functions
    • XBL components
      • FAQ
      • Guide
        • XBL Tutorial
        • Bindings
        • XForms models
        • Including content
        • Event handling
        • Conventions
        • Map XBL example
        • Learning from existing components
      • Advanced topics
        • XBL Modes
        • JavaScript companion classes
        • XBL library
        • Extensions
        • Attachment controls
    • XForms tutorial
      • Introduction
      • Installation
      • The Hello application
      • The Bookcast application
        • The basic app
        • Database access
        • Polishing the app
        • Adding a feed
    • Using XForms from Java apps
  • XML Platform
    • Page Flow Controller
      • Basics
      • XML submission
      • Navigating between pages
      • Paths and matchers
      • Other configuration elements
      • Typical combinations of page model and page view
      • Examples
      • Authorizing pages and services
    • Processors
      • URL generator
      • Request generator
      • PDF to image converter
    • Resources
      • Resource managers
      • Setting up an external resources directory
    • Other
      • Binary and text documents
  • FAQ
    • Licensing
    • PE and Dev Support
    • Form Builder and Form Runner
    • Resources and support
    • Other technical questions
  • Contributors
    • Automated tests
    • Building Orbeon Forms
    • Localizing Orbeon Forms
    • Validation functions
    • Contributor License Agreement
  • Release notes
    • Orbeon Forms 2022.1.9
    • Orbeon Forms 2024.1.1
    • Orbeon Forms 2023.1.7
    • Orbeon Forms 2024.1
    • Orbeon Forms 2023.1.6
    • Orbeon Forms 2023.1.5
    • Orbeon Forms 2021.1.11
    • Orbeon Forms 2022.1.8
    • Orbeon Forms 2023.1.4
    • Orbeon Forms 2023.1.3
    • Orbeon Forms 2023.1.2
    • Orbeon Forms 2022.1.7
    • Orbeon Forms 2023.1.1
    • Orbeon Forms 2023.1
    • Orbeon Forms 2022.1.6
    • Orbeon Forms 2021.1.10
    • Orbeon Forms 2022.1.5
    • Orbeon Forms 2021.1.9
    • Orbeon Forms 2022.1.4
    • Orbeon Forms 2022.1.3
    • Orbeon Forms 2021.1.8
    • Orbeon Forms 2022.1.2
    • Orbeon Forms 2022.1.1
    • Orbeon Forms 2022.1
    • Orbeon Forms 2021.1.7
    • Orbeon Forms 2021.1.6
    • Orbeon Forms 2021.1.5
    • Orbeon Forms 2021.1.4
    • Orbeon Forms 2021.1.3
    • Orbeon Forms 2021.1.2
    • Orbeon Forms 2021.1.1
    • Orbeon Forms 2021.1
    • Orbeon Forms 2020.1.6
    • Orbeon Forms 2019.2.4
    • Orbeon Forms 2019.1.2
    • Orbeon Forms 2018.2.5
    • Orbeon Forms 2018.1.4
    • Orbeon Forms 2020.1.5
    • Orbeon Forms 2020.1.4
    • Orbeon Forms 2020.1.3
    • Orbeon Forms 2020.1.2
    • Orbeon Forms 2019.2.3
    • Orbeon Forms 2020.1.1
    • Orbeon Forms 2020.1
    • Orbeon Forms 2019.2.2
    • Orbeon Forms 2019.2.1
    • Orbeon Forms 2019.1.1
    • Orbeon Forms 2019.2
    • Orbeon Forms 2019.1
    • Orbeon Forms 2018.2.4
  • Release history
  • Use cases
  • Product roadmap
  • Index of features
Powered by GitBook
On this page
  • Introduction
  • Configuration
  • Using parameters
  • Using properties
  • Precedence of parameters over properties
  • URL format
  • Sending PDF and TIFF content
  • Controlling the format
  • Sending a PDF binary
  • Sending a TIFF binary
  • Sending a PDF URL
  • Sending a TIFF URL
  • Sending form metadata
  • Sending attachments and multiple items
  • Annotating XML data
  • Debugging the send action
  • See also
  1. Form Runner
  2. Advanced
  3. Buttons and processes
  4. Form Runner actions

Send action

PreviousSave actionNextEmail action

Last updated 9 months ago

Introduction

The send action is one of the most important actions that Orbeon Forms can perform with form data: it sends data to an HTTP (or HTTPS) service. The following sections detail the possible configuration parameters of this action.

Configuration

Using parameters

[SINCE Orbeon Forms 4.4 except property]

The following example uses three parameters in the send action for the form my-app/my-form:

<property as="xs:string" name="oxf.fr.detail.process.send.my-app.my-form" >
    send(
        uri        = "http://example.org/accept-form",
        method     = "PUT",
        content    = "metadata"
    )
</property>

The following parameters can be used:

  • property: specifies an optional property prefix

  • uri: URL to which to send the data

  • method: GET, POST(default), or PUT

  • nonrelevant

    • [SINCE Orbeon Forms 2017.1]

    • values

      • keep: all values are serialized,

      • remove: non-relevant values are not serialised

      • empty: non-relevant nodes are serialized as empty values

    • default: remove

  • prune

    • [DEPRECATED SINCE Orbeon Forms 2017.1]

    • use nonrelevant instead

    • whether to prune non-relevant nodes (true by default)

  • annotate: space-separated list of levels to annotate elements (the empty string by default)

  • replace: all to load the resulting response in the browser, or none (default)

    [SINCE Orbeon Forms 4.5]

    If replace is set to all and the service issues a redirection via an HTTP status code, the redirection is propagated to the client. This also works with portlets.

    SECURITY NOTE: If replace is set to all, the content of resources or redirection URLs accessible by the Orbeon Forms server are forwarded to the web browser. Care must be taken to forward only resources that users of the application are allowed to see.

  • content:

    • xml to send the XML data (default)

    • metadata to send form metadata, see [SINCE Orbeon Forms 4.7]

    • pdf to send the PDF binary, see [SINCE Orbeon Forms 2016.2]

    • tiff to send the TIFF binary, see [SINCE Orbeon Forms 2016.2]

    • pdf-url to send the PDF URL, see

    • tiff-url to send the TIFF URL, see [SINCE Orbeon Forms 2016.1]

  • data-format-version [SINCE Orbeon Forms 4.8]:

    • edge: send the data in the latest internal format

    • 2019.1.0: send the data in the Orbeon Forms 2019.1-compatible format [SINCE Orbeon Forms 2019.1]

    • 4.8.0: send the data in the Orbeon Forms 4.8-compatible format

    • 4.0.0: send the data in the Orbeon Forms 4.0-compatible format (the default)

  • parameters: name of parameters sent to the service end point, in addition to the form content

    • space-separated list of standard parameters to automatically add to the URL (see below)

    • default: app form form-version document valid language process data-format-version

      • form-version added to defaults in Orbeon Forms 4.7

      • process added to defaults in Orbeon Forms 4.7

  • serialization:

    [SINCE Orbeon Forms 4.7]

    • determine the serialization of the XML data

    • values

      • application/xml: XML serialization

      • none: no serialization

    • default

      • application/xml when method is set to post or put

      • none otherwise

  • prune-metadata:

    [SINCE Orbeon Forms 2016.1]

    • this is applied when content is set to xml only

    • true to remove all occurrences of fr:-prefixed elements

    • false to leave such occurrences

    • default

      • false when data-format-version is set to edge

      • true otherwise

  • content-type:

    [SINCE Orbeon Forms 2016.2]

    • specify the Content-Type header to set when method is set to post or put

    • it is usually not necessary to specify content-type explicitly

    • default

      • application/xml when content is set to xml, metadata, pdf-url or tiff-url

      • application/pdf when content is set to pdf

      • image/tiff when content is set to tiff

  • show-progress:

    [SINCE Orbeon Forms 2017.1]

    • if replace is set to all, whether to continue showing the loading the indicator while the browser navigates away from the current page

    • typically, you'll only want to set this parameter to false if you know that URL the browser navigates to won't replace the current page, say because the page will be opened in another window, or be downloaded by the browser

    • default: true

  • target:

    [SINCE Orbeon Forms 2017.1]

    • if replace is set to all, specifies the name of the window where to display the result from the send(), with same semantic as the

    • typically, if setting a target, you'll also want to add a replace = "false" attribute, so the loading indicator on the current page doesn't stay after the content in the target page has been loaded

    • default: none

  • headers:

    [SINCE Orbeon Forms 2019.2]

    • specifies one or more custom HTTP headers to add to the HTTP request

    • a single header has the usual HTTP format:

      headers = "Foo: value of foo"
    • multiple headers can be separated with a newline escape sequence, as in:

      headers = "Foo: value of foo\nBar: value of bar"
    • a value template may be used, with the caveat about character encodings below:

      headers = "Foo: {//my-control}"
    • NOTE: HTTP headers typically do not support all Unicode characters as header values.

Using properties

The following example refers in the send action to the properties with the common prefix oxf.fr.detail.process.send.my-app.my-form. It configures the URL, the method, and the type of content using three additional sub-properties.

<property as="xs:string" name="oxf.fr.detail.process.send.my-app.my-form" >
    send("oxf.fr.detail.process.send.my-app.my-form")
</property>
<property
    as="xs:string"
    name="oxf.fr.detail.process.send.my-app.my-form.uri"
    value="http://example.org/accept-form"
    />
<property
    as="xs:string"
    name="oxf.fr.detail.process.send.my-app.my-form.method"
    value="PUT"
    />
<property
    as="xs:string"
    name="oxf.fr.detail.process.send.my-app.my-form.content"
    value="metadata"
    />

The following properties can be used to configure a send action with properties:

Properties and XPath Value Templates

[SINCE Orbeon Forms 4.4]

The following properties are XPath Value Templates evaluating in the context of the root element of the form data instance:

  • uri

  • method

  • headers

  • prune

  • annotate

  • content

  • parameters

  • replace [SINCE Orbeon Forms 4.7]

Example

<property as="xs:string" name="oxf.fr.detail.send.success.uri.my-app.my-form">
    /fr/service/custom/orbeon/echo?action=submit&amp;foo={
        encode-for-uri(xxf:instance("fr-form-instance")//foo)
    }&amp;bar={
        encode-for-uri(xxf:instance("fr-form-instance")//bar)
    }
</property>

Note the use of the encode-for-uri() function which escapes the value to place after the = sign.

Precedence of parameters over properties

Parameters have a higher precedence. In this example, the uri parameter is used, even if a oxf.fr.detail.send.success.uri property is present:

send(property = "oxf.fr.detail.send.success", uri = "http://acme.org/orbeon")

URL format

The full URL is composed of:

  • the URL specified by the uri property

  • the following URL parameters (when present in parameters)

    • app: the current form's app name

    • form: the current form's form name

    • form-version: the form definition version in use [SINCE Orbeon Forms 4.5]

    • document: the current document id

    • valid: whether the data sent satisfies validation rules

    • language: the language of the form at the time it was submitted [SINCE Orbeon Forms 4.5]

    • noscript: whether the noscript mode was in use [SINCE Orbeon Forms 4.6]

      • NOTE: Starting with Orbeon Forms 2018.1, this always returns false.

    • process: unique process id for the currently running process [SINCE Orbeon Forms 4.7]

Example:

http://example.org/service?
    document=7520171020e65a1585e72574ae1fbe138c415bee&
    process=139ceb515f918d6d17030b81255d8a3dfa0501cc&
    valid=true&
    app=acme&
    form=invoice&
    form-version=1&
    language=en
    

[SINCE Orbeon Forms 2018.2]

If a parameter name is already present on the URL, the parameter initially on the URL takes precedence.

Sending PDF and TIFF content

Controlling the format

[SINCE Orbeon Forms 2018.1]

When using PDF templates and content = "pdf" or content = "tiff", you can control the PDF processing with the following.

The following parameters allow controlling hints, alerts, and required controls in the PDF:

  • show-hints

    • defaults to the oxf.fr.detail.static-readonly-hint property, which itself defaults to false

    • when true, shows hints in the PDF

  • show-alerts

    • defaults to the oxf.fr.detail.static-readonly-alert property, which itself defaults to false

    • when true, shows alerts in the PDF

  • show-required

    • defaults to the oxf.fr.detail.static-readonly-required property, which itself defaults to false

    • when true, style required controls in the PDF

The following parameters allow controlling the use of PDF templates:

  • use-pdf-template

    • This defaults to true if there is at least one PDF template attached to the form, false otherwise.

    • If at least one PDF template is available, the default is to use one of the PDF templates. But if use-pdf-template = "false", then use of any PDF template is disabled and the automatic PDF is produced.

  • pdf-template-name

    • This contributes to selecting a specific PDF template.

    • If pdf-template-name specifies a name, such as with pdf-template-name = "archive", the list of available PDF templates is reduced to those having an exactly matching name. If no matching name is found, an error is raised.

  • pdf-template-lang

    • This contributes to selecting a specific PDF template.

    • If pdf-template-lang specifies a language, such as with pdf-template-lang = "fr", the list of available PDF templates as reduced by pdf-template-name is used to find a PDF template with a matching language. If no matching language is found, an error is raised.

    • If pdf-template-lang is empty or missing:

      • The PDF template with the current form language is used, if there is a match.

      • If there is no match, the first available PDF template is used.

Sending a PDF binary

[SINCE Orbeon Forms 2016.2]

When content = "pdf" is specified, the PDF binary is sent with a Content-Type set to application/pdf.

Sending a TIFF binary

[SINCE Orbeon Forms 2016.2]

When content = "tiff" is specified, the TIFF binary is sent with a Content-Type set to image/tiff.

Sending a PDF URL

When content = "pdf-url" is specified, the XML document sent has the following format:

<?xml version="1.0" encoding="UTF-8"?>
<url>/xforms-server/dynamic/567f14ee46c6b21640c1a5a7374d5ad8</url>

The PDF can be retrieved by accessing that path with the proper session cookie.

A use case for this is to submit the URL to a local confirmation page. The page can then link to the URL provided, and the user can download the PDF.

NOTE: When the PDF must be sent to a remote service, send the PDF binary directly with content = "pdf" .

Sending a TIFF URL

[SINCE Orbeon Forms 2016.1]

When content = "tiff-url" is specified, the XML document sent has the following format:

<?xml version="1.0" encoding="UTF-8"?>
<url>/xforms-server/dynamic/567f14ee46c6b21640c1a5a7374d5ad8</url>

The TIFF can be retrieved by accessing that path with the proper session cookie.

A use case for this is to submit the URL to a local confirmation page. The page can then link to the URL provided, and the user can download the TIFF file.

NOTE: When the TIFF must be sent to a remote service, send the TIFF binary directly with content = "tiff" .

Sending form metadata

[SINCE Orbeon Forms 4.7]

NOTE: The <value> element is present only since Orbeon Forms 4.7.1.

The metadata is linked to the data with the for attribute:

  • The value of the for attribute can contain multiple ids separated by a space. This associates the given piece of metadata with multiple values in the form data. This typically happens where there are repeated fields in the form, so that there is no duplication of identical metadata.

  • Ids in the for attribute match the ids you get on the data when asking send() to annotate the data with ids using the edge format, that is with a send(annotate = "id", data-format-version = "edge").

Here is an example of send process which sends XML data to a service, followed by sending metadata:

<property as="xs:string"  name="oxf.fr.detail.process.send.my-app.my-form">
    require-uploads
    then validate-all
    then send(
        uri      = "http://localhost:8080/orbeon/xforms-sandbox/service/echo-xml",
        replace  = "none",
        method   = "post",
        content  = "xml",
        annotate = "id"
    )
    then send(
        uri      = "http://localhost:8080/orbeon/xforms-sandbox/service/echo-xml",
        replace  = "none",
        method   = "post",
        content  = "metadata"
    )
</property>

Sending attachments and multiple items

[SINCE Orbeon Forms 2022.1]

You can send multiple items in a single send request. In this case, the items are sent using a multipart request (with a Content-Type: multipart/related header). This allows the recipient of the request to access all the items without performing multiple requests.

In order to generate a multipart request, you pass the content parameter one or more of the following tokens:

  • xml: form data in XML format

  • attachments: all attachments associated with the form data (but not those associated with the form definition)

  • xml-form-structure-and-data: XML form structure and data export (not yet documented)

For example, to send form data with its attachments:

<property as="xs:string" name="oxf.fr.detail.process.send.my-app.my-form" >
    send(
        uri     = "http://example.org/accept-form",
        method  = "POST",
        content = "xml attachments"
    )
</property>

To send form data, attachments, and the PDF file:

<property as="xs:string" name="oxf.fr.detail.process.send.my-app.my-form" >
    send(
        uri     = "http://example.org/accept-form",
        method  = "POST",
        content = "xml attachments pdf"
    )
</property>

When sending XML data and attachments in the same request, paths to attachments in the XML data are replaced with cid: URIs. Each attachment part is given a Content-ID header with the corresponding id.

The Content-Type header sent by Orbeon Forms looks like this (the boundary parameter will change for each request):

Content-Type: multipart/related; boundary=CHZ6Pogx-A1VVuDgU22pcJASumg8S0CrOZhooqlw

The content body looks like this:

--CHZ6Pogx-A1VVuDgU22pcJASumg8S0CrOZhooqlw
Content-Disposition: form-data
Content-Type: application/xml; charset=UTF-8
Content-Transfer-Encoding: binary

<?xml version="1.0" encoding="UTF-8"?>
<form xmlns:fr="http://orbeon.org/oxf/xml/form-runner" fr:data-format-version="4.0.0">
    <my-main-section>
        <first-name>Bob</first-name>
        <pet-picture filename="cat.jpg" mediatype="image/jpeg" size="56803">cid:94b0e57e87fa8f42cb494fdc2808f58c5b31be41</pet-picture>
    </my-main-section>
</form>
--CHZ6Pogx-A1VVuDgU22pcJASumg8S0CrOZhooqlw
Content-ID: <94b0e57e87fa8f42cb494fdc2808f58c5b31be41>
Content-Disposition: attachment; filename*=UTF-8''cat.jpg
Content-Type: image/jpeg
Content-Transfer-Encoding: binary

...binary image content here...
--CHZ6Pogx-A1VVuDgU22pcJASumg8S0CrOZhooqlw
Content-ID: <7a361b305064d3a95511da35a8c53edbabe3af8b>
Content-Disposition: attachment; filename*=UTF-8''My%20demo%20multipart%20form%20-%20ce85cc4b7be9975d.pdf
Content-Type: application/pdf
Content-Transfer-Encoding: binary

...binary PDF content here...

--CHZ6Pogx-A1VVuDgU22pcJASumg8S0CrOZhooqlw--

Annotating XML data

annotate can contain the following tokens:

  • error, warning, info: XML elements are annotated with information associated with the given level or levels.

  • id: XML elements are annotated with a unique id. [SINCE Orbeon Forms 4.7]

If the property is missing or empty, no annotation takes place. For example:

<property
  as="xs:string"
  name="oxf.fr.detail.send.success.annotate.my-app.my-form"
  value="warning info"/>
<form xmlns:xxf="http://orbeon.org/oxf/xml/xforms">
    <my-section>
        <number xxf:info="Nice, greater than 1000!">2001</number>
        <text xxf:warning="Should be shorter than 10 characters">This is a bit too long!</text>
    </my-section>
</form>

Debugging the send action

The send action operates on the server, so you won't see the data submitted in your browser's dev tools, in particular.

There are a few ways to debug those requests:

  1. Setup the service you are calling to log requests, if it can do that.

  2. Use the built-in echo service, and modify your send process to look like this:

    <property as="xs:string" name="oxf.fr.detail.process.send.my-app.my-form">
        send(
            uri = "/fr/service/custom/orbeon/echo",
            method="POST",
            content="xml",
            replace="all"
        )
    </property>

    This will send the payload to your browser window.

  3. Enable logging of http wire in log4j.xml with:

    <category name="org.apache.http.wire">
        <priority value="debug"/>
    </category>

    The information will be logged to orbeon.log. This will log all HTTP requests, however, and can be very verbose.

The easiest ways are probably options 1 and 2 above.

See also

property prefix + .uri: see

property prefix + .method: see

property prefix + .nonrelevant: see

property prefix + .prune: see

property prefix + .annotate: see

property prefix + .replace: see

property prefix + .content: see

property prefix + .parameters: see

property prefix + .serialization: see

property prefix + .prune-metadata: see

property prefix + .content-type: see

property prefix + .show-progress: see

property prefix + .target: see

property prefix + .headers: see

workflow-stage: the current workflow stage associated with the data, as returned by the function [SINCE Orbeon Forms 2021.1]

See also

When content = "metadata" is specified, the XML document sent contains metadata per control. shows examples based on the Orbeon Forms sample forms.

metadata: in XML format

pdf:

tiff:

excel-with-named-ranges:

The recipient will need the ability to decode a multipart request. This is usually done with a utility library. For example .

Enable XForms logging and the token. The payloads will be logged to orbeon.log. This will log all Orbeon Forms submissions, however.

Use an HTTP proxy like .

PDF templates
This page
Excel export
Apache Commons FileUpload
submission-details
Charles
Form Runner actions
Form Runner save action
PDF templates
HTML target attribute on <a>
details
details
details
details
details
uri parameter
method parameter
prune parameter
prune parameter
annotate parameter
replace parameter
content parameter
parameters parameter
serialization parameter
prune-metadata parameter
content-type parameter
show-progress parameter
target parameter
headers parameter
form metadata
PDF binary
TIFF binary
fr:workflow-stage-value()