• get values,
  • set values (when submitting a form for instance),
  • call methods (to react to application events).The underlying engine is fully compatible with Java Unified Expression Language (see http://java.sun.com/products/jsp/reference/techart/unifiedEL.html),except that expressions are compiled, and strongly-typed (no weak-type conversion).]]> A tree item is made of:
    • a (displayable) text,
    • an (optional) icon.
    ]]>
    A displayable item is made of:
    • an (internal) value,
    • a (displayable) text,
    • an (optional) icon.
    ]]>
    An Action may trigger application code, and in any cases it must cause a navigation to occur (to a defined view point).]]> The file data (information and stream) can be retrieve through file contextual bean, of type org.ow2.opensuit.core.impl.multiparts.IFileUploadPart.
    Supported contextual beans: $file]]>
    This bean may be used in the 'OnUpload' expression to retrieve the input file information and process the upload action.
    It implements the interface org.ow2.opensuit.core.impl.multiparts.IFileUploadPart.
    Default: $file.]]>
    In view mode, this field displays a filename, possibily clickable.
    .In edit mode, it is an upload field.]]>
    This page could be either in the same context than the origin page, or in an other context.
    In the second case, all required url parameters have to be valuated to enter the target page.]]>
    Supported contextual beans: $locale]]> This bean is available at render-time only, and may be used to compute the flag icon.
    Default: $locale.]]>
    This method has to throw a ValidationError to complain about validation issue(s).]]> This bean contains the value that is being validated.
    Default: $value.]]>
    Default: none.]]> If not set, the table displays all rows in the same page.Otherwise, the table truncates data into pages, and shows links to help navigation (previous, next, page accessors, ...).]]> The bottom row is always visible (whatever the pagination).
    It is used for example to implement total sum(s) in a spreadsheet.
    The expression type must be compatible with 'RowsData' elementary type.]]>
    When defined, the Table component displays a collapse/expand button in front of each row.
    Warning: Use this feature with extreme care. For now, only the ViewForm component may be used to design the details view.]]>
    Those buttons may perform multiple actions on table rows (based on selection for instance).]]> Supported contextual beans: $row]]>
    Default: 'Table'.]]> Default: false.]]> This bean is available at render-time only, and represents the current row that is being rendered.
    Default: $row.]]>
    Default: table.]]>

    It has the following features:

    • supports pagination: a table may or not be paginated (in that case, displays a set of navigation links to help the user navigate accross the table),
    • supports sorting: sorting components may be associated to columns,
    • supports filtering: filter components may be associated to columns,
    Note: in a paginated table, if the total count of elements is not returned by the application, the table adapts its rendering and behavior to handle this situation.

    For large amounts of data, it is highly recommended to use pagination. Otherwise, the table rendering might overwhelm server resources, and also the client browser if the resulting page is very large.
    Moreover, the Table components provides a simple support for sorting, filtering and paginating raw vector data localy (see attribute SortAndPaginateLocaly). This can be very handy for adding table features with no implementation cost, but it also has limits.
    Once again for displaying large amounts of data, it is recommended that you implement yourself those operations (that can perfectly be implemented on the data base side), not to overweight server resources.

    Right before rendering itself, the table component gets vector data from the application with the GetData binding, each element of this vector representing a row in the table.
    During this invocation, the table makes available its rendering context (class org.ow2.opensuit.xml.base.html.table.RenderingContextBean), that may be accessed by application code and by table child components.
    This context is a request Bean with name '$context', and has the following attributes:

    • int page: the currently displayed page number (zero-based),
    • int rowsPerPage: number of rows displayed per page (0 meaning 'unbound').
    • int firstIndex: the first expected object index (= page x rowsPerPage),
    • int sortedColumn: the currently sorted column (1 based). A value of 0 means there is not sort. A negative value means the column is sorted descendingly, a positive value means it is sorted ascendingly.
    • String[] columnFilters: the filters to apply to columns (not implemented yet).
    • rowsCount: the total count of rows (expected to be set by the application).

    Then during the rendering of its rows, the table keeps available the object representing the current row as a request attribute with name '$row'.
    Its attributes may be accessed as any standard Bean.]]> Supported value types are: any number type or class.]]> May be accessed from JSPs using Inlude.getCaller(request).getView(id)]]> May be accessed from JSPs using Inlude.getCaller(request).getAction(id)]]>

    This component can be used to invoke and include rendering from JSPs or servlets.
    The inclusion is carried out using the J2EE request dispatcher.]]> Should be used to implement dynamic form fields.]]> This can be rendered either as a list of checkboxes (default) or a multi-selection list.
    Supported value types are: int[], java.lang.Integer[] or java.lang.String[]]]>
    Supported types are: java.util.Date or java.util.CalendarSupported contextual beans: $row]]> Formatting is done according to the declared 'Type' and the user's locale.]]> If undefined, the default frame will be used.]]>

    Each page of the Application is displayed in a Frame. A Frame is the part of the GUI that doesn't change much from page to page. It is generally composed of a banner, some menus (left and/or right), and a footer.
    It must embed a PageContainer component, that is in charge of rendering the current executing page (see PageContainer).
    The Application must have at least one Frame, but it may have several (for instance, a specific frame without any menu to display messages and uncatched errors, and another one to access the application administration functionnalities).]]> Supported contextual beans: $value]]> This bean contains the text entered by the user.
    It may be used in the 'CompletedValues' expression.
    Default: $value.]]>
    true.]]> Should be used to implement dynamic form fields.]]> true value. Default: true.]]> Supported value types are: boolean or Boolean.]]> When set, it allows to render several multiple buttons (by iterating on the returned vector).]]> Supported contextual beans: $item (if expression 'IterateOn' is set).]]> Supported contextual beans: $item (if expression 'IterateOn' is set).]]> Supported contextual beans: $item (if expression 'IterateOn' is set).]]> Supported contextual beans: $item (if expression 'IterateOn' is set).]]> Supported contextual beans: $item (if expression 'IterateOn' is set).
    Default: true.]]>
    Supported contextual beans: $item (if expression 'IterateOn' is set).
    Default: true]]>
    This bean is available at render-time only.
    Default: $item.]]>
    If the IterateOn expression is set, then several buttons will be rendered (by iterating on the returned collection).]]> If not set, the reload button is not displayed.]]> It is only aimed at presenting non-editable (and navigable) data.]]> Allows to render several sub-menus.]]> Supported contextual beans: $submenu (if expression 'IterateOn' is set).]]> Supported contextual beans: $submenu (if expression 'IterateOn' is set).]]> Supported contextual beans: $submenu (if expression 'IterateOn' is set).]]> Supported contextual beans: $submenu (if expression 'IterateOn' is set).]]> Supported contextual beans: $submenu (if expression 'IterateOn' is set).
    Default: true]]>
    Supported contextual beans: $submenu (if expression 'IterateOn' is set).
    Default: true]]>
    Supported contextual beans: $submenu (if expression 'IterateOn' is set).
    Default: true]]>
    Supported contextual beans: $submenu (if expression 'IterateOn' is set).]]>
    This bean is available at render-time only.
    Default: $submenu.]]>
    It first retrieves a vector data (through the Iterable binding), and then retrieves sub-menu info (text, action, tooltip, items, ...) by iterating on the items.
    Sub-menu elements are accessible as a contextual bean (default: '$submenu').]]>
    For a String value, checks its length is greater than the Min and/or lower than the Max.
    ]]>
    Such a page displays a message, and an acknowledgement button.
    The acknowledgement button shall bring the user to another page.]]>
    This component allows to declare that some page shares the same execution context than another one.
    Beans and url parameters defined in the referenced context may be accessed freely.]]>
    Default: true.]]> Default: true.]]> Supported contextual beans: $item.]]> Expected return type: boolean.]]> Allows to render several tabs.]]> Supported contextual beans: $tab (if expression 'IterateOn' is set).]]> Supported contextual beans: $tab (if expression 'IterateOn' is set).]]> Supported contextual beans: $tab (if expression 'IterateOn' is set).]]> Supported contextual beans: $tab (if expression 'IterateOn' is set).]]> Supported contextual beans: $tab (if expression 'IterateOn' is set).]]> Supported contextual beans: $tab (if expression 'IterateOn' is set).]]> This bean is available at render-time only.
    Default: $tab.]]>
    It retrieves tab items from the Items binding, then iterates on each item to render tabs.
    The current rendering tab may be accessed as a contextual bean (default '$tab').]]>
    Supported types are String or numbers (any type).
    Supported contextual beans: $item]]>
    Supported contextual beans: $item]]> Supported contextual beans: $item]]>
    This bean is available at render-time only.
    Default: $item.]]>
    It first retrieves a vector data (through the 'IterateOn' expression), and then retrieves individual items information by iterating on each item.]]> After having read the message, the user should click the button to continue.
    This action is typically used to implement an acknowledgment page.]]>
    This is used by both DoAndForward and SwitchAction components, to define action cases. ]]> This is mainly used to implement layout and/or conditional visibility.]]> It provides a richer behavior if the error is a org.ow2.opensuit.xml.base.error.IError (ex: org.ow2.opensuit.xml.base.error.LocalizedError or org.ow2.opensuit.xml.base.error.NonLocalizedError).]]> Should be used to implement dynamic form fields.]]> This can be rendered either as a combo-box (default), a list of radio-buttons or a single-selection list.
    Supported value types are: int, java.lang.Integer or java.lang.String.]]>
    It is aimed at rendering the current page during the rendering phase.]]> true.]]> Declares a fixed locale to be used for every user of the application.]]> Such a page displays a message (actually a question), a Yes and a No button.
    The application should react to the user response.]]>
    The parent node object is accessible with the $item contextual bean.
    The item type must be compatible with the RootItems.]]>
    Supported contextual beans: $item.]]> Supported contextual beans: $item.]]> Supported contextual beans: $item.]]> Expected return type: boolean.
    Supported contextual beans: $item.]]>
    Supported contextual beans: $item.]]>
    This bean is available at render-time only.
    Default: $item.]]>
    This component should know how to best display details, explainations and advises to the user to let him understand what went wrong, and what to do to solve it.]]> This action does not trigger any application code, but simply navigates to the given url.]]> Processes the request and returns the HttpResponse (accessible through the contextual $response bean).
    Supported contextual beans: $response]]>
    When defined, it is used by Sorter and Filter components preferably than the textual value.
    As a matter of fact, the returned value should implement Comparable
    Supported contextual beans: $row]]>
    Supported contextual beans: $row]]> Supported contextual beans: $row]]> When defined, the cell text is rendered as an hyperlink.
    Supported contextual beans: $row]]>
    If specified, clicking the cell hyperlink will open a new window.
    Applies only if OnClick action is specified.]]>
    Supported value type is: java.lang.String]]> at rendering time an action among several.
    Instead of the DoAndForward component, this choice is made when the page is rendered.
    Note that if the Switch condition evaluates to an unknown case, no action will be rendered (no hyperlink).]]>
    Defines when the bean should be instantiated and destroyed.]]> This is a class with public default constructor and public getter and setter methods.]]> Beans declared here are accessible from any page of the application.]]> This is the topmost component for modeling a web application.
    This component manages all application-level concerns:

    • rules: that is declaring and factorizing application rules (for authorization purpose for instance),
    • message providers: that is declaring where to get localized messages from,
    • locale policy: that is how to determine the user locale,
    • beans: that is how to get and set data from the business layer, and how to invoke buisiness logic (control),
    • error handling: that is how to display errors to the user in a way he will fully understand and solve the issue,
    ]]>
    java.util.ResourceBundle).]]> If not set, the reload button is not displayed.]]> The callbacked method may throw a org.ow2.opensuit.core.validation.ValidationErrors with all validation error messages.]]> view and edit.
    In view mode, the form shows data (read only).
    In edit mode, the form allows to change values and submit changes.
    Displayed buttons depend on the mode:
    • in view mode: Edit, Reload (if OnReload action is set), and customisable additionnal buttons (see AddButtons),
    • in edit mode: Submit, Reset (if ShowResetButton is true), Cancel.
    The Edit button (if enabled by the Editable condition), switches the form to the edit mode, and the Cancel button (in edition mode) rollbacks the form to the view mode.]]>
    This component is in charge of:
    1. doing something,
    2. then return the name of the forward to follow (possibly depending on how the action turned out).
    ]]>
    This allows to override the action to process after the user clicks the "continue" button.]]>
    This component is in charge of reacting to a user or GUI event, then navigating to one of the declared forwards.
    Note that evaluating the forward name is done only when then user triggers the action. This is useful only if information to decide which forward to follow is only available when the user triggers this action. This component is typically used to react to form submissions.
    If information to decide the action is known at render time, then use the SwitchAction instead.]]>
    Supported value types are: java.util.Date or java.util.Calendar]]> Default: 'Tree'.]]> When set, it allows to render several table columns (by iterating on the returned vector).]]> Supported contextual beans: $item (if expression 'IterateOn' is set).]]> Supported contextual beans: $item (if expression 'IterateOn' is set).]]> Supported contextual beans: $row]]> Supported contextual beans: $item (if expression 'IterateOn' is set).]]> Supported contextual beans: $item (if expression 'IterateOn' is set).]]> This class will be set on the header cell (th) as well as on table cells (td).
    Default: None.]]>
    Default: Left.]]> This bean is available at render-time only.
    Default: $column]]>
    Such a page displays a message (actually a question), a Yes and a No button.
    The application should react to the user's response.
    This action is typically used to implement user confirmation.]]>
    Defines the execution context associated to one or several pages.
    Such a context is defined by:
    • parent context (optional): any page context this one extends,
    • authorization rule (optional): a rule that is checked whenever a user is trying to access this context,
    • input parameters (optional): url parameters required to load the context,
    • local beans (optional): beans used locally in this page,
    • on load actions (optional): set of actions to trigger when this context is loaded (generaly beans initilization),
    • on quit actions (optional): set of actions to trigger when this context is leaved.
    Within this context, the url consistency is maintained (required input parameters are checked when entering this context, and are always reentered while staying in this context), ensuring that any url may be bookmarked, exchanged and restored.]]>
    The callbacked method may throw a org.ow2.opensuit.core.validation.ValidationErrors with all validation error messages.]]> If not set, the reset button is not displayed.The associated action should reset all form values to their initial value.]]> If not set, the cancel button is not displayed. This action is expected to navigate (generally leave the current interactive process).]]> Such a form is always in edition mode, shows a submit button and possibly a reset button.
    It is typically used to implement input search criterias page or new entity creation.]]>