CAF Html - caf_h

Tag Library Information 
InfoValue
ID (tag prefix)caf_h
URIhttp://webmethods.com/jsf/caf/html
Tag Summary 
TagDescription
applet

WARNING: This tag has been deprecated. Applets are no longer supported by many modern browsers. Consider alternatives.

A control that displays a Java applet. The control's value attribute must name the jar containing the applet, or the control's href facet must contain a Portlet URL control that names the jar containing the applet. However, if the applet uses only a single class file, the control's codebase attribute must specify the base URL for the applet's class file.

Name the applet class using the control's code attribute such as MyApplet.class. If the applet is a serialized object, name the applet using the control's object attribute.

Children

UIParameter children specify applet parameters. All other children specify content to display if browser does not support plug-ins.

asyncCommandButton

A button that invokes a server-side action when activated as an asynchronous request. This control must be contained by a standard JavaServer Faces form.

You can download an article and an accompanying code sample describing how to work with the refresh attribute of this control from the Software AG Community website:

Children

Any. Children are displayed as button labels after the content of the value attribute. Control Parameter children are added as request parameters to the submitted form when the button is clicked.

asyncCommandHidden

A client-side script that invokes a server-side action when called by some other client-side code using an asynchronous request. This control must be contained by a standard JavaServer Faces form.

You can download an article and an accompanying code sample describing how to work with the refresh attribute of this control from the Software AG Community website:

Children

Control Parameter children are added as request parameters to the submitted form when the command is invoked.

asyncCommandIcon

An icon that invokes a server-side action using an asynchronous request when the user clicks the icon. This control must be contained by a standard JavaServer Faces form.

You can download an article and an accompanying code sample describing how to work with the refresh attribute of this control from the Software AG Community website:

Children

Any. Children are displayed as the icon label, after the icon. Control Parameter children are added as request parameters to the submitted form when the icon is clicked.

asyncCommandInterval

A client-side script that invokes a server-side action on a timed interval using an asynchronous request. This control must be contained by a standard JavaServer Faces form.

You can download an article and an accompanying code sample describing how to work with the refresh attribute of this control from the Software AG Community website:

Children

Any. Control Parameter children are added as request parameters to the submitted form when the command is invoked.

asyncCommandLink

A link that invokes a server-side action using an asynchronous request when the user clicks the link. This control must be contained by a standard JavaServer Faces form.

You can download an article and an accompanying code sample describing how to work with the refresh attribute of this control from the Software AG Community website:

Children

Any. Children are displayed as a link label after the content of the value attribute. Control Parameter children are added as request parameters to the submitted form when the link is clicked.

atomFeedIcon

An icon that exports the contents of a specified table to a syndication feed such as a RSS/Atom. You must contain the Atom Feed Icon in a Form. You must set the Form control's requireSessionToken property to false.

To provide custom content for the export, for example to provide custom feed metadata like title or last updated date, you can bind the Atom Feed Icon control's feedProvider property value to a custom com.webmethods.caf.faces.data.IContentProvider instance, or bind the Atom Feed Icon control's entriesProvider property to a separate com.webmethods.caf.faces.data.ITableContentProvider instance.

An IContentProvider designed for atom feed metadata is the com.webmethods.caf.faces.data.export.AtomFeedExportProvider class. It maps the properties of an existing IContentProvider to a custom set of feed metadata elements or attributes with each element or attribute's content specified using a binding expression.

An ITableContentProvider designed for atom entry metadata is the com.webmethods.caf.faces.data.export.AtomEntriesExportProvider class. It maps the content of an existing ITableContentProvider to a custom set of entry metadata elements or attributes with each element or attribute's content also specified using a binding expression.

The following example demonstrates the creation of an AtomFeedExportProvider and an AtomEntriesExportProvider in custom page bean methods. You bind the properties for which these methods are getters, myAtomFeedProvider and myAtomEntriesProvider to the Atom Feed Icon control's feedProvider and entriesProvider property values.

This example assumes that you have an existing table content provider for the raw table data, accessible using the getMyExistingTableContentProvider() method. The getMyAtomFeedProvider() method creates a map of property name/value pairs for the feed metadata, specifying the standard atom id, title, and author elements, and including a custom newToday property to render as an attribute because its value is a simple String value. Although the AtomFeedExportProvider allows for remapping keys from the feed's original content provider, in this example the content provider is just a static map, so there is no need to do so. The keys are generated with the AtomFeedExportProvider static createDefaultKeys() method performs an identity mapping by mapping each property to itself. You can use this static method to get the default set of keys for a dynamic content-provider, and remap just one or two custom properties, without changing the remaining properties.

The getMyAtomEntriesProvider() method maps the three standard atom entry elements, id, title, and updated, plus two custom properties, priority and priorityName to row data, using binding expressions. You must specify the name of the row variable as the third argument to the AtomEntriesExportProvider constructor. For each atom entry, the content of the entry's id element is generated from the value of the table row's projectId and id properties. The content of the entry's title element is generated from the value of the table row's title property

public IContentProvider getMyAtomFeedProvider() {
   Map feedProperties = new HashMap();
   // standard atom metadata
   feedProperties.put("id", "issues");
   feedProperties.put("title", "Issues");
   feedProperties.put("author", "DevTrack");
   // custom metadata
   feedProperties.put("newToday", getNewToday());
   MapContentProvider feed = new MapContentProvider(feedProperties);
   Map keys = AtomFeedExportProvider.createDefaultKeys(feed,"feed");
   return new AtomFeedExportProvider(feed, keys, "feed"); }
public ITableContentProvider getMyAtomEntriesProvider() {
   ITableContentProvider existingProvider =
      getMyExistingTableContentProvider();
   Map keys = new HashMap(); // standard atom metadata keys.put("id",
   createValueBinding("#{row.projectId}_#{row.id}")); keys.put("title",
   createValueBinding("#{row.title}")); keys.put("updated",
   createValueBinding("#{row.lastModifiedDate}"));
   // custom metadata
   keys.put("priority", createValueBinding("#{row.priorityValue}"));
   keys.put("priorityName", createValueBinding("#{row.priorityName}"));
   return new AtomEntriesExportProvider(existingProvider,keys, "row"); }

This example shows how you might render the atom feed. The export processing handles escaping property values, for example, the Name should be "MWS" value is escaped as Name should be "MWS"):

<?xml version="1.0" encoding="UTF-8"?>
<feed xml:base="http://mws:8585/" xml:lang="en-US"
   xmlns="http://www.w3.org/2005/Atom"
      xmlns:x="http://webmethods.com/caf/faces/data/export/atom/custom"
   x:newToday="2">
   <id>issues</id>
   <title>Issues</title>
   <updated>2007-05-22T21:18:40Z</updated>
   <author>
      <name>DevTrack</name>
   </author>
   <generator uri="http://webmethods.com/caf/faces/data/export/atom"
      version="1.0">webMethods CAF AtomExportBean</generator>
   <entry x:priority="1" x:priorityName="Critical">
      <id>higgins_123</id>
      <title>Nothing Works</title>
      <updated>2007-05-22T21:18:40Z</updated>
   </entry>
   <entry x:priority="3" x:priorityName="Medium">
      <id>higgins_ABC</id>
      <title>Name should be 'MWS'</title>
      <updated>2007-05-22T12:22:33Z</updated>
   </entry>
   <entry x:priority="4" x:priorityName="Low">
      <id>getraer_TLC</id>
      <title>I like monkey</title>
      <updated>2007-03-02T01:12:11Z</updated>
   </entry>
</feed>

To render custom properties such as the newToday feed property and the priority and priorityName entry properties as elements, you can compose their values using Map or IContentProvider objects. Use the content key to indicate if the Map property or the IContentProvider should render as the content of the custom element.

In the following example, the feed's newToday property is built out of a map with the map's content property set to a String value. The feed's newToday property renders as an element with the specified String value as the element's content.

In the following example, the entries' priority property is built out of a map, with the map's content property bound to the current table row's priorityName property, and the map's number property bound to the current table row's priorityValue property. As a result, each entry's priority property renders as an element, with the table row's priorityName property as the entry's priority element's content, and the table row's priorityValue property as the number attribute of the entry's priority element.

public IContentProvider getMyAtomFeedProvider() {
   Map feedProperties = new HashMap();
   // standard atom metadata
   feedProperties.put("id", "issues");
   feedProperties.put("title", "Issues");
   feedProperties.put("author", "DevTrack");
   // custom metadata
   Map newToday = new HashMap();
   newToday.put("content", getNewToday());
   feedProperties.put("newToday", newToday);
   MapContentProvider feed = new MapContentProvider(feedProperties);
   Map keys = AtomFeedExportProvider.createDefaultKeys(feed, "feed");
   return new AtomFeedExportProvider(feed, keys, "feed");
}
public ITableContentProvider getMyAtomEntriesProvider() {
   ITableContentProvider existingProvider =
   getMyExistingTableContentProvider();
   Map keys = new HashMap(); // standard atom metadata keys.put("id",
   createValueBinding("#{row.projectId}_#{row.id}")); keys.put("title",
   createValueBinding("#{row.title}")); keys.put("updated",
   createValueBinding("#{row.lastModifiedDate}"));
   // custom metadata
   Map priority = new HashMap();
   priority.put("content", createValueBinding("#{row.priorityName}"));
   priority.put("number", createValueBinding("#{row.priorityValue}"));
   feedProperties.put("priority", priority);
   return new AtomEntriesExportProvider(existingProvider, keys, "row");}

You could render the atom feed as follows:

<?xml version="1.0" encoding="UTF-8"?>
<feed xml:base="http://mws:8585/" xml:lang="en-US"
   xmlns="http://www.w3.org/2005/Atom"
      xmlns:x="http://webmethods.com/caf/faces/data/export/atom/custom">
      <x:newToday>2</x:newToday>
      <id>issues</id>
      <title>Issues</title>
      <updated>2007-05-22T21:18:40Z</updated>
      <author>
         <name>DevTrack</name>
      </author>
      <generator uri="http://webmethods.com/caf/faces/data/export/atom"
         version="1.0">webMethods CAF AtomExportBean</generator>
      <entry>
         <x:priority number="1">Critical</x:priority>
         <id>higgins_123</id>
         <title>Nothing Works</title>
         <updated>2007-05-22T21:18:40Z</updated>
      </entry>
      <entry>
         <x:priority number="3">Medium</x:priority>
         <id>higgins_ABC</id>
         <title>Name should be 'MWS'</title>
         <updated>2007-05-22T12:22:33Z</updated>
      </entry>
      <entry>
         <x:priority number="4">Low</x:priority>
         <id>getraer_TLC</id>
         <title>I like monkey</title>
         <updated>2007-03-02T01:12:11Z</updated>
      </entry>
</feed>

You can specify a substitute URL for the syndication feed, using this control's feedUrl property. You must manually generate the feed at that location using a servlet.

Using a Feed Reader

When a user attempts to subscribe to a feed generated in this manner, the user's feed reader first must log into My webMethods Server. The user must use a desktop-based feed reader. The user can add a Web-based feed reader when My webMethods Server is accessible outside of the corporate firewall, or when the Web-based feed reader is hosted within the same firewall as My webMethods Server. The user must also configure the feed with My webMethods Server credentials by adding username and password parameters to the feed URL. For example, if the atom feed URL was the following:

http://mws:8585/meta/default/wm_xt_fabricfolder/0000005202?export=atom

The user can add his or her username and password to the URL as in the following:

http://mws:8585/meta/default/wm_xt_fabricfolder/0000005202?export=atom&username=alice&password=alicepassword

Some feed readers also allow specifying authentication credentials directly in the user interface. To enable the feed reader to authenticate the credentials, a system administrator must set the feed�s authentication scheme to use the basic authentication scheme. For more information on setting a page's authentication scheme, see the Portlet URL Script control.

Children

Any. Children are displayed as the icon label, after the icon.

javax.faces.Parameter children are added as request parameters to the link.

com.webmethods.caf.faces.portleturl.PortletUrlScript children can hook into clientside JavaScript events such as onClick.

attachmentsList

A control that enables the user to view a list of files, and add or remove files from the list. The list of files is referenced by the control's Attachments Provider property, which must be bound to an instance of com.webmethods.caf.faces.data.attachments.IAttachmentsProvider.

The Attachments List panel also provides the following:

  1. An Add Attachments user interface that enables adding multiple attachments.
  2. A drag-and-drop panel that enables uploading files directly from Windows Explorer.
  3. Support for webDAV links to files, for in-place document editing through Internet Explorer.
  4. A set of validators to limit the MIME types, file extensions, and maximum file size. You can also create validator messages, along with custom validators for the Attachments List Panel control.
  5. Support for text directionality (LTR or RTL).
attachmentsPanel

WARNING: This tag has been deprecated. Replace with an Attachments List control

A control that enables the user to view a list of files, and add or remove files from the list. The list of files is referenced by the control's Attachments Provider property, which must be bound to an instance of com.webmethods.caf.faces.data.attachments.IAttachmentsProvider.

The Attachments Panel also provides the following:

  1. An Add Attachments user interface that enables adding multiple attachments.
  2. A set of validators to limit the MIME types, file extensions, and maximum file size. You can also create validator messages, along with custom validators for the Attachments Panel control.

To enable drag-and-drop functionality, implement the Attachments List control.

breadcrumbs

Web application breadcrumb navigation for the current page as a list of links.

chart

Formats a table containing data in chart form rather than in a table structure.

The data comes from a javax.faces.model.DataModel object. A standard ordered collection list container such as java.util.List is automatically wrapped in an ITableContentProvider container.

The following containers are wrapped automatically:

  • java.lang.Object array
  • java.util.List

Each item in a table row is mapped to the chart label item or a chart data item. The chart then uses the chart label items and chart data items to render the chart according to the item values.

chartDataColumn

A control representing a single series of a chart (a chart data column).

The data model that specifies the containing chart control specifies the value that the column represents. You can include multiple chart data column controls to render a multiple chart series.

Children:

  • Command links
  • Basic links
chartLabelColumn

Specifies the legends for the chart that is displayed in the rendered chart.

This control specifies either the color legend, which is displayed next to the chart, or the column legend for a bar chart, depending on the row or column setting. You can add only a single label column.

column

Content of a table's column. The column's content renders multiple times, once for each row displayed by the table. You can specify sorting using the ordinal property and enable the users ability to toggle the column�s ascending or descending order.

The Basic Column control also optionally specifies the sorting behavior for the column. See Standard Column for further explanation.

Children

Any.

columnHidden

A hidden (data-only) column for a table. The content of this hidden column can be accessed using a client-side script.

columnRowHeaders

A table column that displays as row-wise headers. See the Standard Column control for more information about using columns.

Children

Any.

columnScrollbar

A table column that displays a scroll bar that pages the table. The best practice is to use the Scrollbar Column with an Async Table that has its clientSideCache property set to true.

columnSelectRow

WARNING: This tag has been deprecated. Replace with a column that has a 'Select Row *' control in the body and a 'Select * Rows' control in the header

A column that contains checkboxes that select table rows.

columnSortLink

A control that draws a link to sort a table by a specified column. This functionality is incorporated automatically by the header in a Standard Column header.

If you add this control to a column's header or footer, you set the column's sort property to the appropriate sort key and click the link to maintain the current form state. If you place the Column Sort Link control in a different location on a page, you must specify the control's for property. To perform form sorting the Column Sort Link control, you must place the control in a command Form.

To enable restful sorting, you must set this target table's sortParamName property to the name of the request parameter from which the target table derives its sort property. For more information, see the Table control.

Children

Any. Children are used as the link's label.

columnStandard

A control that determines the content of a data table's column. The content of the column renders multiple times, once for each row displayed by the table.

The Standard Column control is different from the Basic Column control in that it does not have a footer facet, and its header automatically incorporates the functionality of the Column Sort Link control.

The column control also optionally specifies the sorting behavior for the column. To enable sorting, configure both the table and each sortable column with an id property. Each sortable column must have a sort property.

The sort property specifies a key to sort the column. The key is a ValueBinding expression bound to the current row object. For example, to sort on the name property of the current row, use an expression "#{row.name}". The table's row variable, configured using the var property was a row. To sort on the zeroth index of a row object, when the row object is an array or list, use an expression "#{row0}". You can use any property whose values support the java.lang.Comparable interface for sorting. The data model feed to the table does the sorting, and some data models might use keys other than ValueBinding expressions.

The ascending and ordinal properties specify the default sorting state of the column. For example, you want to sort a table with a type column and a name column. By default you can sort the table first by type, with larger type numbers first, and then by name, alphabetically:

TYPE    NAME
8000    Phase-a-tron
8000    The Destruction Maker
7000    Laser, Blue
7000    Laser, Green
7000    Laser, Red
0400    Advil
0400    Anvil

Set the ascending property of the type column to false, and the ordinal property of the type column to 1. Next set the ascending property of the name column to true, and the ordinal property of the name column to 2.

Children

Any.

columnTruncating

A data table column that automatically limits its content to a single line and to the specified width of the column. Like a Standard Column, the content of the column will be rendered multiple times, one for each row displayed by the table. See the Standard Column control for more information about using columns.

Children

Any.

commandButton

A button that invokes a server-side action when clicked by the user. This control must be contained by a standard JavaServer Faces form.

Children

Any. Children are displayed as button label after the content of the value property. Control Parameter children are added as request parameters to the submitted form when the button is clicked.

commandHidden

A client-side script that invokes a server-side action when called by client-side code. This control must be contained by a standard JavaServer Faces form.

Children

Control Parameter children are added as request parameters to the submitted form when the command is invoked.

commandIcon

An icon that invokes a server-side action when clicked. This control must be contained by a standard JavaServer Faces form.

Children

Any. Children are displayed as the icon label after the icon. Control Parameter children are added as request parameters to the submitted form when the icon is clicked.

commandLink

A link that invokes a server-side action when clicked. This control must be contained by a standard JavaServer Faces form.

Children

Any. Children are displayed as link label after the content of the value property. Control Parameter children are added as request parameters to the submitted form when the link is clicked.

contentParameter

A parameter that allows child content in place of a value property. Use with controls such as the Import Template View control (caf_f\importTemplateView) to specify replacement content for incomplete sections of the imported view, or the Parameterized Text control to specify message properties.

Children

Any.

customDrag

Enables a user to drag a user interface control.

If the move property is set to true, and if the target control is successfully dragged and dropped, and the target's Handle Drop behavior sets the CAF.Draggable.current.result flag to move, the target control's HTML content is removed from the current page. Otherwise, dragging and dropping has no effect on the target control.

The Allow Drag handler is invoked every time a user tries to drag the control with the Custom Drag behavior. The handler is passed two arguments, draggable and event. The draggable argument is the target control's CAF.Draggable object. The event argument is the browser mouse event that precipitates the drag. The handler should return true if the target control is draggable and false if control is not draggable.

customDrop

Enables a user to drop a draggable item onto a control.

This behavior's default drop handling copies the value of child controls with the same local ID from the dropped control into the child controls of the behavior's target control. For example, two block panels each in a different naming-container with three text controls, panel A and panel B. Panel A has a CustomDrag behavior and panel B has a CustomDrop behavior. The IDs of the text controls in panel A are name, description, and notes. The IDs of the text controls in the panel B are item-number, name, and description. If the user drags and drops the panel A into panel B, the Custom Drop behavior copies the Panel A's name and description text control values to the name and description text controls of panel B. The Custom Drop behavior does not modify panel B's item-number text control.

Note:You can have multiple controls with the same ID as long as each of those controls is in a different naming-container. For more information, see "Control ID Reference" in the CAF Development Help.

The Custom Drop behavior in the above example only copies output text control values without providing information about the drag-and-drop event to the server. However, if a hidden input control is added with an id of item-id to each panel, when a user drags the panel A into panel B, the value of this hidden input is copied from panel A to panel B. When the panel B's parent form is submitted, the new value of panel B's hidden input is also submitted to the server, enabling server-side code to do any processing that is needed as a result of the drag-and-drop event.

Server-side processing could include notifying a back-end data store that panel B panel has a new item-id, and to display the new item-number, name, and description that corresponds to the item-id.

If the Custom Drop onDropSetValue attribute is set to true, the Custom Drop behavior changes to copying the value of the dropped control to the value of the Custom Drop behavior's target control, ignoring child controls. This example uses two image controls, the first, image1, has a CustomDrag behavior, and image2 has a CustomDrop behavior with onDropSetValue set to true. The user drags the image1 control onto image2. Because the image2 onDropSetValue behavior property is set to true, the Custom Drop behavior copies the image1 control's value, which is the image URL to image2.

You can specify custom client-side JavaScript code to execute when the user drags a control over the target control (the specified allowDrop handler), and when the user drops another control on the target control (the specified handleDrop handler).

The allowDrop handler is invoked every time a user tries to drag a control over the Custom Drop behavior's target control.

Custom Drop is activated when the dragged control enters the target control's boundaries. Custom Drop receives two arguments, source (src) and destination (dst). The src argument is the dragged HTML element, which is a container for a temporary copy of the original control's main HTML element. The dst argument is the target control's main HTML element.

The handleDrop handler is invoked every time a user tries to drop a control on the Custom Drop behavior's target control, but only if the allowDrop handler returned true or was not specified. It is passed two arguments: src and dst. The src argument is the dragged HTML element, which is a container for a temporary copy of the original control's main HTML element; the dst argument is the target control's main HTML element. The handler should return true if it fully handled the drop, and false to allow the default handleDrop processing to execute (that is, to copy the content of the dropped control to the target control).

For more information, see information about the CAF.Draggable class in the CAF Development Help.

customElement

A custom HTML element; use UIParameter children to specify attributes.

Children

Any. UIParameter children specify the HTML element's custom attributes.

dataAddRowButton

A button that adds a row to a table or list. You must bind the table or list to a com.webmethods.caf.faces.data.IUpdateableTableContentProvider.. The row is added to a table when the enclosing form is posted to the server and it passes validation.

Children

Any. Children are displayed as button label after value of label property

dataAddRowIcon

An icon that adds a row to a table or list. To update the table, you must bind the table to com.webmethods.caf.faces.data.IUpdateableTableContentProvider.. The row is added to a table when the enclosing form is posted to the server and it passes validation.

dataAddRowLink

A link that adds a row to a table or list. To update the table, you must bind the table to com.webmethods.caf.faces.data.IUpdateableTableContentProvider.. The row is added to a table when the enclosing form is posted to the server and it passes validation.

Children

Any. Children are displayed as link label after value of label property

dataAsyncCategorizedTable

A table whose content is populated from either a javax.faces.model.DataModel object, or a com.webmethods.caf.faces.data.ITableContentProvider object. For more information, see the Async Table control.

Each item in the list is mapped to a row in the table. Columns are configured by adding column children. With a categorized table, the column with the primary sort, a sort ordinal of 1, is rendered as the category for the group of rows with the same value for the specified column. All other columns are rendered once for each row.

To demonstrate how the Categorized Table differs from a regular Table, consider the following regular Table, which is sorted first by Product, then by Quantity:

Quarterly Sales
Product   Quantity   Customer  
Hammer   300    General Mills  
Hammer   2   General Electric  
Saw   12   General Dynamics  
Saw   10   General Motors  
Screwdriver   70   General Dynamics  
Screwdriver   1   General Electric  

The following illustrates the same data as a Categorized Table. Rows with the same value for the Product column are displayed as a category of rows, grouped by the Product column value:

Quarterly Sales
Product   Quantity   Customer  
Hammer  
    300   General Mills  
   2   General Electric  
Saw  
   12   General Dynamics  
   10   General Motors  
Screwdriver  
   70   General Dynamics  
   1   General Electric  

The Async Table pages and sorts using asynchronous requests. For more information, see the Async Table control.

Children

javax.faces.Column, Basic Column control

dataAsyncIterator

A control that traverses a com.webmethods.caf.faces.data.ITableContentProvider object, displaying the content once for each row in the provider.

Standard list-like containers are wrapped automatically as an ITableContentProvider. The following containers are wrapped automatically:

  • java.lang.Object array
  • java.util.List
  • javax.sql.rowset.CachedRowset

The difference between the async iterator and a regular iterator is that the async iterator pages asynchronously. See the Async Table control (caf_h\dataAsyncTable) for more information about configuring its asynchronous properties.

The suppressInputs property is deprecated, and should not be used. To restrict the controls that are submitted and processed when a control is refreshed, place the control inside of a Disjoint Form control. Only the controls in that disjoint form will be submitted and processed.

Children

Any.

dataAsyncListbox

An asynchronous list box control with content that comes from a com.webmethods.caf.faces.data.ITableContentProvider object.

Standard list-like containers are wrapped automatically as an ITableContentProvider. The following containers are wrapped automatically:

  • java.lang.Object array
  • java.util.List
  • javax.sql.rowset.CachedRowset

Each item in the data model is mapped to a row in the list. The content of the list is rendered multiple times, once for each row displayed. The difference between the async list and a regular list is that the async list pages asynchronously. See the Async Table control (caf_h\dataAsyncTable) for more information about configuring its asynchronous properties.

The suppressInputs property is deprecated, and should not be used. To restrict the controls that are submitted and processed when a control is refreshed, place the control inside of a Disjoint Form control. Only the controls in that disjoint form will be submitted and processed.

Children

Any.

dataAsyncSearchResultTable

A search result table control that uses the My webMethods Server search result table look-and-feel.

The Async Search Result Table control pages and sorts records (rows) using asynchronous requests. You can use the bufferChunk, bufferMin, bufferMax, clientSideCache, flashOnChange, progressDelay, progressMsg, and suppressInputs attributes to customize the table's asynchronous behavior.

For more information on the com.webmethods.caf.faces.table.AsyncTable, see the Async Table control.

If you generate a SearchResult portlet in Composite Application Framework, the portlet preferences are generated by the application. For more information, see information about setting preferences for the Search Results portlet in the portlet preferences description in the webMethods CAF Development Help.

To provide custom content for the export, such as to get a set of columns with more machine-friendly formatted data, you can bind the Async Search Result Table control's exportProvider property value to a separate com.webmethods.caf.faces.data.ITableContentProvider instance. A convenient ITableContentProvider implementation designed for CSV export is the com.webmethods.caf.faces.data.export.CSVExportProvider class. It maps the content of an existing ITableContentProvider (usually the provider that provides the raw data for the table) to a custom set of columns, with each column's content specified by a binding expression.

The following example demonstrates creating a CSVExportProvider in a custom page bean method. (You would bind the property for which this method is a getter, "myExportProvider", to the Async Search Result Table control's exportProvider property value.) It assumes that there is already an existing table content provider for the raw table data, accessible via the getMyExistingTableContentProvider() method. It creates four columns: "ID", "Title", "Priority", and "Priority Name". Additionally, it specifies the content of these columns with binding expressions: #{row.projectId}_#{row.id}, #{row.title}, #{row.priorityValue}, and #{row.priorityName}. The name of the row variable, in this case "row", must be specified as the third argument to the CSVExportProvider constructor.) For each row, the content of the "ID" column in the exported table will be generated from the value of the existing table row's "projectId" and "id" properties; the content of the "Title" column will be generated from the value of the existing table row's "title" property; and so on.

public ITableContentProvider getMyExportProvider() {
   ITableContentProvider existingProvider = getMyExistingTableContentProvider();
   Map keys = new LinkedHashMap();
   keys.put("ID", createValueBinding("#{row.projectId}_#{row.id}"));
   keys.put("Title", createValueBinding("#{row.title}"));
   keys.put("Priority", createValueBinding("#{row.priorityValue}"));
   keys.put("Priority Name", createValueBinding("#{row.priorityName}"));
   return new CSVExportProvider(existingProvider, keys, "row");
}

Note that because the exported table's column labels are simply the column keys ("ID", "Title", "Priority", and "Priority Name"), it is a good practice to use string resources from a resource bundle instead of hardcoding the labels. The labels are hardcoded in this example for simplicity. Note also, that the example uses a LinkedHashMap, which ensures that the columns will be exported in the order they were added to the keys map. The exported CSV might look like the following:

ID, Title, Priority, Priority Name
higgins_123, Nothing Works, 1, Critical
higgins_ABC, "Name should be ""MWS""", 3, Medium

The export processing handles the escaping of column values (in the example output above, the Name should be "MWS" value is escaped as "Name should be ""MWS""").

Children

javax.faces.Column, Basic Column control

dataAsyncSearchResultTree

A common search result tree control. Encapsulates the standard My webMethods Server search result tree look-and-feel.

You can use the Async Search Result Tree control in any generic portlet application. In Composite Application Framework, the Async Search Result Tree control is used in the Search Results portlet of a Search Bar/Search Result portlet application. A Search Results portlet can be created using the New Portlet wizard, selecting the Search Results Portlet option on the first page of the wizard. The two portlets are connected using wiring. You can wire the portlets using the lastSearchState property of the Search Bar portlet to the queryString property of the Search Results portlet.

If you generate a new Search Results portlet with Composite Application Framework, you do not have to add any preferences manually. Preferences are generated automatically for you. For more information, see information about setting preferences for the Search Results portlet in the portlet preferences description in the webMethods CAF Development Help.

When specifying the initialDepth attribute, use 0 to indicate roots only; 1 to indicate roots and children; 2 to indicate roots, children and grandchildren, etc.

Similarly, when specifying the refillDepth attribute, use 0 to indicate children only; 1 to indicate children and grandchildren; 2 to indicate children, grandchildren, and great grandchildren, etc.

Children

javax.faces.Column, Basic Column control

dataAsyncSimpleList

An asynchronous list control with content that comes from a com.webmethods.caf.faces.data.ITableContentProvider object.

Standard list-like containers are wrapped automatically as an ITableContentProvider. The following containers are wrapped automatically:

  • java.lang.Object array
  • java.util.List
  • javax.sql.rowset.CachedRowset

Each item in the data model is mapped to a row in the list. The content of the list is rendered multiple times, once for each row displayed. The difference between the async list and a regular list is that the async list pages asynchronously. See the Async Table control (caf_h\dataAsyncTable) for more information about configuring its asynchronous properties.

  • The marker attribute does not apply to "ol" or "ul" types. Supported values can be a selection from the drop-down list on the Display tab in the control's Properties view, or any raw html string.

Children

Any.

dataAsyncTable

A table whose content is populated from either a javax.faces.model.DataModel object, or a com.webmethods.caf.faces.data.ITableContentProvider object.

The Async Table pages and sorts using asynchronous requests. When the Async Table control's clientSideCache property is set to true, the table caches rows that it has retrieved from the server until the page is refreshed, or the table or a parent of the table is refreshed. You can refresh the Async Table using the refresh() method of its client-side model. You can also use the Refresh Interval control to refresh the table on a timed basis.

You can configure the Async Table to buffer in its cache rows on either side of the visible page. When the bufferMin and bufferMax properties are set to positive integers, the table ensures that at least the bufferMin number of rows are cached on either side of the visible page.

  • If the minimum number of rows is not buffered, the Async Table control retrieves the bufferMax number of rows on either side of the visible page to store in the cache.
  • If the bufferChunk property is set to zero (0), the Async Table control retrieves the rows as one group.
  • If the bufferChunk property is set to a positive integer, the Async Table control uses multiple asynchronous requests to retrieve the specific number of rows set in the bufferChunk property

For example, an Async Table has the following property settings:

    clientSideCache=true
    bufferMin=10
    bufferMax=100
    bufferChunk=0

In this example, the Async Table displays rows 1 through 10 of 1000. When the page is rendered initially, the Async Table displays rows 1 - 10, and buffer rows 11 - 110. If the user pages forward to rows 91 - 100, these rows are in the client-side cache, and the user can display the rows immediately without an additional request. If the user pages forward to rows 101 - 110, these rows are also in the client-side cache, and the user can see the rows immediately. However, the buffer now contains less than 10 rows on the next side of the visible page. The buffer contains zero rows, so the Async Table must request rows 111 - 210. If the user jumps to rows 991 - 1000, these rows are not in the client-side cache and neither are the previous 10 rows. This requires that the Async Table send a request for the rows 891 - 1000, displaying the last 10 rows in the table, and buffering the previous 100 rows.

In this second example, the Async Table has the following property settings:

    clientSideCache=true
    bufferMin=50
    bufferMax=50
    bufferChunk=10

In this second example, the Async Table displays rows 1 - 10 of 1000. When the page is rendered initially, the Async Table displays rows 1 - 10. As the Async Table waits for the user to do something, it makes 5 asynchronous requests, each for 10 more rows, buffering 50 rows on the next side of the cache. If the user pages forward to rows 11 - 20, these rows are available in the client-side cache and can display immediately without an additional request. However, the buffer contains less than 50 rows on the next side of the visible page. The buffer contains the next 40 rows. The Async Table must request rows 61 - 70. If the user jumps to rows 991 - 1000, these rows are not in the client-side cache. The Async Table must request rows 991 - 1000 to display the requested rows. The Async Table makes 5 more asynchronous requests, each retrieving 10 more previous rows, bringing the buffer up to 50 on the previous side of the cache.

Children

javax.faces.Column, Basic Column control

dataAsyncTabsList

An asynchronous list of tabs with content that comes from a com.webmethods.caf.faces.data.ITableContentProvider object.

Standard list-like containers are wrapped automatically as an ITableContentProvider. The following containers are wrapped automatically:

  • java.lang.Object array
  • java.util.List
  • javax.sql.rowset.CachedRowset

Each item in the data model is mapped to a tab in the list. The content of the list is rendered multiple times, once for each tab displayed. The difference between async tabs and regular tabs is that the async tab pages asynchronously. See the Async Table control (caf_h\dataAsyncTable) for more information about configuring its asynchronous properties.

  • For the rows attribute, a value of less than one displays all rows.
  • The suppressInputs property is deprecated, and should not be used. To restrict the controls that are submitted and processed when a control is refreshed, place the control inside of a Disjoint Form control. Only the controls in that disjoint form will be submitted and processed.

Children

Any.

dataAsyncTree

A tree populated with content from a com.webmethods.caf.faces.data.tree.ITreeContentProvider object. An ITreeContentProvider presents a flattened view of the tree, iterating over the tree structure in depth-first order. The Async Tree control differs from the standard Tree control in that the Async Tree control initially displays only a small portion of the tree and uses asynchronous requests to display other portions as a user expands nodes on the client.

LazyNodeTreeContentProvider

For large trees, use the LazyNodeTreeContentProvider, which is designed to access a tree's nodes only as needed, making it suitable for use with a data source that would normally require many queries to construct the full tree.

To use the LazyNodeTreeContentProvider, you must:

  • Expose your data as a tree of com.webmethods.caf.faces.data.tree.INode objects.
  • Configure your INode implementation to call the getChildren() method to confirm whether the node has children or not. If the node has children, a "+" icon is added to the node in the user interface. Lazy loading is still applied, as the method does not work recursively down the tree.

If the node has children, they are loaded when the user expands the node in the user interface. As a result, only a relatively small number of the tree nodes must load their children in a large data tree.

You can initialize the LazyNodeTreeContentProvider with a list of root nodes or with a single root node. You can configure the initial state of the LazyNodeTreeContentProvider to a certain depth by using its setOpenToDepth() method, where 0 indicates completely closed, 1 indicates show children, 2 indicates show children and grandchildren. For example:

INode root = new MyNodeImpl("my root info");
ITreeContentProvider tree = new LazyNodeTreeContentProvider(root);
tree.setOpenToDepth(1);

Columns and Rows

Just like the Table control, columns can be added to the Tree control to display content for each tree row. Table columns (including special columns, like Select Row columns) work in Trees exactly the same as they do in Tables. Additionally, special tree-specific Tree Toggle column controls enable users to expand and collapse tree rows. It is recommended that each tree include a Tree Toggle control.

You can sort columns by specifying a key in the column's sort property value. For more information, see the Standard Column control.

Asynchronous Properties

Use the Async Tree control's initialDepth, progressDelay, progressFlashOnComplete, progressMsg, refillDepth, refreshOnShow, and suppressInputs attributes to customize the tree's asynchronous behavior.

  • Use the initialDepth property to set the number of tree nodes loaded the first time on the client.

    When specifying the initialDepth attribute, use 0 to indicate roots only; 1 to indicate roots and children; 2 to indicate roots, children and grandchildren, etc.

  • Use the refillDepth property to determine how many levels of nodes are loaded when the user tries to expand a node, and the node's children are not available on the client.

    When specifying the refillDepth attribute, use 0 to indicate children only; 1 to indicate children and grandchildren; 2 to indicate children, grandchildren, and great grandchildren, etc.

Children

javax.faces.Column, Basic Column control

dataCalendar

A control that uses a table to display cells as days in a calendar layout. Use the Calendar control to display a list of calendar events in a calendar table.

The calendar format uses the displayUnits property to set the arrangement of days as a full calendar month, a single week, or a single day. Setting the rows property specifies the number of displayed calendar units at one time. For example, specifying displayUnits to units of days, and setting the rows property to 3, displays a three-day horizontal span of days. If a paging control is attached to the calendar, it moves forward or back three days at a time.

The Calendar control displays days, weeks, and months based on a range of items that use a zero-based index. To use a zero-based index, you must define the calendar's calendarStartDate property.

When a calendarStartDate is not specified, the default value is calculated using the current displayUnits. For example, if the displayUnits property is set to week, the default start date is set to the week prior to the current week. The user cannot page back to before the calendar's calendarStartDate.

The calendarEndDate property specifies the last date the user can view in the calendar. An undefined calendarEndDate indicates an open-ended range.

The events displayed in the Calendar control are provided by binding the events property to an ICalendarEventProvider, which exposes a list of objects that implement the ICalendarEvent interface. You can use an actual ICalendarEventProvider, which is a list containing ICalendarEvent objects, or an array of ICalendarEvents.

The Calendar control separates events into two categories:

  • Multi-day events lasting longer than one day or spanning midnight into the next day.

    The Calendar control renders Multi-day events horizontally and occupy a single row in the calendar.

  • Sub-day event which represent a portion of the day

    The Calendar control renders Sub-day events as items stacked vertically in a day's cell.

The calendar contents display in the header and event facets. The header facet is a set of controls that draws the calendar header and can contain a set of text controls that display the range of dates displayed. The event facet contains a set of controls that draw each event in the calendar. Using the event facet, you to specify how to render the event drawn.

The facet controls can bind to any expression. However, the calendar exposes three scope variables that represent the current item being drawn. The properties exposed by these variables are visible in the Bindings View:

  • Unit--A CalendarUnit object exposing information about the currently displayed unit (month, week, day). This variable is useful when drawing the calendar header.
  • Day--An ICalendarDay object exposing information about the current day being drawn. The variable contains a single Date.
  • Event--The ICalendarEvent object currently in rendering process. Although any object can use the ICalendarEvent object, the interface exposes the event Start/Stop date, event type, header, and body for use in the event facet controls.
dataCategorizedTable

A table whose content is populated from a javax.faces.model.DataModel or a com.webmethods.caf.faces.data.ITableContentProvider object. Standard list-like containers such as java.util.List are wrapped automatically as an ITableContentProvider. The following containers are wrapped automatically:

  • java.lang.Object array
  • java.util.List
  • javax.sql.rowset.CachedRowset

Each item in the list is mapped to a row in the table. Columns are configured by adding column children. With a categorized table, the column with the primary sort, a sort ordinal of 1, is rendered as the category for the group of rows that have the same value for that column. All other columns are rendered once for each row.

To demonstrate how a Categorized Table differs from a regular Table, consider the following regular Table, which is sorted first by Product, then by Quantity:

Quarterly Sales
Product   Quantity   Customer  
Hammer   300   General Mills  
Hammer   2   General Electric  
Saw   12   General Dynamics  
Saw   10   General Motors  
Screwdriver   70   General Dynamics  
Screwdriver   1   General Electric  

The following illustrates the same data as a Categorized Table. Rows with the same value for the Product column are displayed as a category of rows, grouped by the Product column value:

Quarterly Sales
Product   Quantity   Customer  
Hammer  
   300   General Mills  
   2   General Electric  
Saw  
   12   General Dynamics  
   10   General Motors  
Screwdriver  
   70   General Dynamics  
   1   General Electric  

Children

javax.faces.Column, Standard Column control

dataExportTableButton

A button that exports the contents of a specified table to a CSV file. You must contain the Export Table Button in a command Form.

To provide custom content for the export, such as to provide a set of columns with more machine-friendly formatted data, you can bind this control's exportProvider property value to a separate com.webmethods.caf.faces.data.ITableContentProvider instance. An ITableContentProvider designed for CSV export is the com.webmethods.caf.faces.data.export.CSVExportProvider class. It maps the content of an existing ITableContentProvider, that is the provider that delivers the raw data for the table to a custom set of columns with each column's content specified by a binding expression.

The following example demonstrates creating a CSVExportProvider in a custom page bean method. You bind the property to the getter method, myExportProvider, to the control's exportProvider property value. There is an existing table content provider for the raw table data, accessible using the getMyExistingTableContentProvider() method. The application creates four columns: ID, Title, Priority, and Priority Name and specifies the content of these columns with binding expressions: #{row.projectId}_#{row.id}", #{row.title}, #{row.priorityValue}, and #{row.priorityName}. Specify the name of the row variable as the third argument to the CSVExportProvider constructor. For each row, the content of the ID column in the exported table generates from the value of the existing table row's projectId and id properties. The content of the Title column generates from the value of the existing table row's title property.

public ITableContentProvider getMyExportProvider() {
     ITableContentProvider existingProvider =
          getMyExistingTableContentProvider();
     Map keys = new LinkedHashMap();
     keys.put("ID", createValueBinding("#{row.projectId}_#{row.id}"));
     keys.put("Title", createValueBinding("#{row.title}"));
     keys.put("Priority", createValueBinding("#{row.priorityValue}"));
     keys.put("Priority Name", createValueBinding("#{row.priorityName}"));
     return new CSVExportProvider(existingProvider, keys, "row");
}

In the code example above, the exported table's column labels are the column keys, such as ID, Title, Priority, and Priority Name. As a best practice use the String resources from a resource bundle instead of hard-coding the labels. The labels in this example are hardcoded. The examples uses A LinkedHashMap to ensure that the columns are exported in the order they were added to the keys map. The exported CSV might look like the following:

ID, Title, Priority, Priority Name
higgins_123, Nothing Works, 1, Critical
higgins_ABC, "Name is "MWS"", 3, Medium

The export processing handles the escaping of column values such as in the example output above, the Name is "MWS" value is escaped as "Name is ""MWS""".

dataIterator

Specifies a control that traverses a com.webmethods.caf.faces.data.ITableContentProvider object displaying the control's content for each row in the provider.

Standard list-like containers are wrapped automatically as an ITableContentProvider. The following containers are wrapped automatically:

  • java.lang.Object array
  • java.util.List
  • javax.sql.rowset.CachedRowset

Each item in the data model is mapped to a row in the list. The content of the list is rendered multiple times, once for each row displayed. The difference between the async list and a regular list is that the async list pages asynchronously. See the Async Table control (caf_h\dataAsyncTable) for more information about configuring its asynchronous properties.

To enable restful paging, you must set the list's firstParamName property to the name of the request parameter from which the list derives its first property. For example, conider a case where the list binds the myFirst request parameter to its first property, where an example URL is /myTable?myFirst=10. Using a value binding expression, #{param.myFirst}, you would set the value of the list's firstParamName property to "myFirst". Note that to bind the value of a request parameter to the list's first property, you must manually convert the request parameter value to a primitive int (see the getMyFirst() method below). The list does not need to be contained within a Command Form to do restful paging.

To enable restful page sizing, you must set the list's rowsParamName property to the name of the request parameter from which the list derives its rows property. For example, if the list binds the myRows request parameter to its rows property, where an example URL might be /myTable?myRows=10, you would set the value of the list's rowsParamName property to "myRows". To bind the value of a request parameter to the list's rows property, you must manually convert the request parameter value to a primitive int, see the getMyRows() method below for an example. The list does not need to be contained within a Command Form to do restful paging.

// Convert "myFirst" request parameter to a primitive int.
public int getMyFirst() {
   FacesContext context = FacesContext.getCurrentInstance();
   String s = (String) context.getExternalContext().getRequestParameterMap().get("myFirst");
   if (s != null)
      return Integer.parseInt(s);
   return 0;
}

// Convert "myRows" request parameter to a primitive int.
public int getMyRows() {
   FacesContext context = FacesContext.getCurrentInstance();
   String s = (String) context.getExternalContext().getRequestParameterMap().get("myRows");
   if (s != null)
      return Integer.parseInt(s);
   return 10;
}

Children

Any.

dataListbox

A list box control with content that comes from a com.webmethods.caf.faces.data.ITableContentProvider object.

Standard list-like containers are wrapped automatically as an ITableContentProvider. The following containers are wrapped automatically:

  • java.lang.Object array
  • java.util.List
  • javax.sql.rowset.CachedRowset

Each item in the data model is mapped to a row in the list. The content of the list is rendered multiple times, once for each row displayed. The difference between the async list and a regular list is that the async list pages asynchronously. See the Async Table control (caf_h\dataAsyncTable) for more information about configuring its asynchronous properties.

Children

Any.

dataMoveRowDownButton

A button that moves the selected row or rows down one row in a table or list. You must bind the table or list to a com.webmethods.caf.faces.data.IReorderableTableContentProvider. The row is added to a table when the enclosing form is posted to the server and it passes validation.

Children

Any. Children are displayed as button label after the value of the label property.

dataMoveRowDownIcon

An icon that moves the selected row or rows down one row in a table or list. You must bind the table or list to a com.webmethods.caf.faces.data.IReorderableTableContentProvider. The row is added to a table when the enclosing form is posted to the server and it passes validation.

dataMoveRowDownLink

A link that moves the selected row or rows down one row in a table or list. You must bind the table or list to a com.webmethods.caf.faces.data.IReorderableTableContentProvider. The row is added to a table when the enclosing form is posted to the server and it passes validation.

Children

Any. Children are displayed as link label after the value of the label property.

dataMoveRowUpButton

A button that moves the selected row or rows up one row in a table or list. You must bind the table or list to a com.webmethods.caf.faces.data.IReorderableTableContentProvider. The row is added to a table when the enclosing form is posted to the server and it passes validation.

Children

Any. Children are displayed as button label after the value of the label property.

dataMoveRowUpIcon

An icon that moves the selected row or rows up one row in a table or list. You must bind the table or list to a com.webmethods.caf.faces.data.IReorderableTableContentProvider. The row is added to a table when the enclosing form is posted to the server and it passes validation.

dataMoveRowUpLink

A link that moves the selected row or rows up one row in a table or list. You must bind the table or list to a com.webmethods.caf.faces.data.IReorderableTableContentProvider. The row is added to a table when the enclosing form is posted to the server and it passes validation.

Children

Any. Children are displayed as link label after the value of the label property.

dataPages

A control that draws page numbers as links, such as pages 1...12 13 14 15 16 17 18 19...100, which enable a user to jump higher numbered pages or lower number pages.

When you put the Data Pages control in a table's header or footer, form paging is enabled. Click a link to maintain the current form state. If you place this control in a different location on a page, you must specify the control's for property. This control must be contained within a command Form to do "form" paging.

To enable "restful" paging, you must set this target table's firstParamName property to the name of the request parameter from which the target table derives its first property. For more information, see the Table control.

dataPrevNext

A control that draws <<Previous and Next>> links that page a table one page backward or forward. You must contain the Data Prev/Next control in a command Form to do form paging.

When you add the Data Prev/Next control to a table's header or footer, form paging is enabled. Users can click <<Previous or Next>> and the table maintains its current form state. If you place the control elsewhere on a page, you must specify the Data Prev/Next control's for property.

To enable restful paging, you must set the target table's firstParamName property to the name of the request parameter from which the target table derives its first property. For more information, see the Table control.

Children

Any. Children are placed between Previous and Next labels.

dataRemoveRowButton

A button that removes a row from a table or list. You must bind the table or list to a com.webmethods.caf.faces.data.IUpdateableTableContentProvider. The row is removed from a table when the enclosing form is posted to the server and it passes validation.

Children

Any. Children are displayed as button label after the value of the label property.

dataRemoveRowIcon

An icon that removes a row from a table or list. You must bind the table or list to a com.webmethods.caf.faces.data.IUpdateableTableContentProvider. The row is removed from a table when the enclosing form is posted to the server and it passes validation.

dataRemoveRowLink

A link that removes a row from a table or list. You must bind the table or list to a com.webmethods.caf.faces.data.IUpdateableTableContentProvider. The row is removed from a table when the enclosing form is posted to the server and it passes validation.

Children

Any. Children are displayed as link label after the value of the label property.

dataSearchResultTable

A common search result table control. Encapsulates the standard My webMethods Server search result table look-and-feel.

You can use the Search Result control in any generic application. In Composite Application Framework, the Search Result control is used in the Search Results portlet of a Search Bar/Search Result portlet application. You can create a Search Results portlet using the New Portlet wizard, and selecting the Search Results Portlet option on the first page of the wizard. Connect the two portlets using wiring. Wire the lastSearchState property of the Search Bar portlet to the queryString property of the Search Results portlet.

Children

javax.faces.Column, Basic Column control

dataSearchResultTree

A search result tree control that encapsulates the My webMethods Server search result tree look-and-feel.

You can use the Search Result Tree control in any generic application. In Composite Application Framework, the Search Result Tree is used in the Search Results portlet of a Search portlet application project. The search bar and search results portlets are connected using wiring. Wire the lastSearchState property of the Search Bar portlet to the queryString property of the Search Results portlet.

Children

javax.faces.Column, Basic Column control

dataSelectAllRowsCheckbox

A check box that selects all rows in an entire table. To enable selecting rows, the table's content provider must implement the com.webmethods.caf.faces.data.ISelectableTableContentProvider interface. When the ISelectableTableContentProvider interface is implemented, the table has two modes, selected and unselected. When set to selected mode, the user can select the specified rows. In unselected mode, all rows are implicitly selected and only specified rows are unselected.

dataSelectAllVisibleRowsCheckbox

A check box that selects all rows or clears all selected rows in the table's visible page. You must implement the com.webmethods.caf.faces.data.ISelectableTableContentProvider interface to enable user row selection. The ISelectableTableContentProvider interface enables two states for table rows, selected or unselected. In selected state, specified rows are selected explicitly. In unselected state, all rows are implicitly selected, and only specified rows are unselected.

dataSelectRowCheckbox

A check box or radio-button that selects the containing row in a table. You must implement the table's content provider, the com.webmethods.caf.faces.data.ISelectableTableContentProvider interface. The ISelectableTableContentProvider interface enables the mode, selected or unselected. In selected mode, specified rows are selected explicitly. In unselected mode, all rows are implicitly selected, and only specified rows are unselected.

The Select Row Checkbox control displays check boxes when the multiple property is true, and radio-buttons when the multiple property is false. You can disable the check boxes or radio-buttons on a per-row basis by supplying a binding expression for the disabled property.

dataSelectRowLink

A link that toggles the selection mode of the containing row in a table. To enable users to select rows, the table's content provider must implement the com.webmethods.caf.faces.data.ISelectableTableContentProvider interface. This interface enables selecting rows in selected or unselected mode. In selected mode, the user must explicitly select a set of rows. In the unselected mode, all rows are implicitly selected and only specified rows are unselected.

You can disable links on a per-row basis by supplying a binding expression for the disabled property.

Children

Any. Children are displayed as a link label after the value of the label property.

dataSelectRowOnClick

A control that makes each row in a table or list selectable by clicking the row. You place the control inside a table column or list. To select rows, the table's content provider must implement the com.webmethods.caf.faces.data.ISelectableTableContentProvider interface. The ISelectableTableContentProvider interface enables selecting rows in selected or unselected mode. In selected mode, specified rows are selected explicitly. In unselected mode, all rows are implicitly selected, and only specified rows are unselected.

You can disable selecting rows on a per-row basis by supplying a binding expression for the disabled property.

dataSelectRowQuadStateCheckbox

A check box with four states for selecting the containing row in a tree. The four check box states are off, on, mixed-off, and mixed-on. Changing the selection state of descendant rows toggles only the mixed state of a row. For example, when all descendants of a selected row are deselected, the selected row remains selected. The user can select individual rows independent of the state of their descendants. You can disable check boxes on a per-row basis by supplying a binding expression for the disabled property.

Initial State User Action
  Deselect All Descendants Deselect Some, Select Some Descendants Select All Descendants
off off mixed-off mixed-off
on mixed-on mixed-on on
mixed-off off mixed-off mixed-off
mixed-on mixed-on mixed-on on

To enable selecting rows, the tree's content provider must implement the com.webmethods.caf.faces.data.ISelectableTableContentProvide interface. The interface enables selecting rows that are in selected or unselected mode. In selected mode, specified rows are selected explicitly. In unselected mode, all rows are implicitly selected, and only specified rows are unselected. The tree's content provider might implement the com.webmethods.caf.faces.data.tree.ISelectableTreeContentProvider interface that enables the content provider to optimize mixed state calculations.

dataSelectRowTriStateCheckbox

A check box with three states for selecting the containing row in a tree. The three check box states are off, on, and mixed-off. When a user deselects all descendants of a given row, the row's selection state switches to off. When a user selects some, but not all descendants of a given row, the row's selection state switches to mixed-off. When a user selects all descendants of a given row, the row's selection state switches to the on state. Supply a binding expression for the disabled property to change the state to use a per-row basis.

Initial State User Action
  Deselect All Descendants Deselect Some, Select Some Descendants Select All Descendants
off off mixed-off on
on off mixed-off on
mixed-off off mixed-off on

To enable selecting rows, the tree's content provider must implement the com.webmethods.caf.faces.data.ISelectableTableContentProvider interface. This interface enables selecting rows in selected or unselected mode. In selected mode, specified rows are selected explicitly. In unselected mode, all rows are implicitly selected, and only specified rows are unselected. The tree's content provider might implement the com.webmethods.caf.faces.data.tree.ISelectableTreeContentProvider interface, which allows the content provider to optimize mixed state calculations.

dataSimpleList

A list control with content that comes from a com.webmethods.caf.faces.data.ITableContentProvider object.

Standard list-like containers are wrapped automatically as an ITableContentProvider. The following containers are wrapped automatically:

  • java.lang.Object array
  • java.util.List
  • javax.sql.rowset.CachedRowset

Each item in the data model is mapped to a row in the list. The content of the list is rendered multiple times, once for each row displayed. The difference between the async list and a regular list is that the async list pages asynchronously. See the Async Table control (caf_h\dataAsyncTable) for more information about configuring its asynchronous properties.

To enable restful paging, you must set the list's firstParamName property to the name of the request parameter from which the list derives its first property. For example, consider a case where the list binds the myFirst request parameter to its first property, where an example URL is /myTable?myFirst=10. Using a value binding expression, #{param.myFirst}, you would set the value of the list's firstParamName property to "myFirst". Note that to bind the value of a request parameter to the list's first property, you must manually convert the request parameter value to a primitive int (see the getMyFirst() method below). The list does not need to be contained within a Command Form to do restful paging.

To enable restful page sizing, you must set the list's rowsParamName property to the name of the request parameter from which the list derives its rows property. For example, if the list binds the myRows request parameter to its rows property, where an example URL might be /myTable?myRows=10, you would set the value of the list's rowsParamName property to "myRows". To bind the value of a request parameter to the list's rows property, you must manually convert the request parameter value to a primitive int, see the getMyRows() method below for an example. The list does not need to be contained within a Command Form to do restful paging.

// Convert "myFirst" request parameter to a primitive int.
public int getMyFirst() {
   FacesContext context = FacesContext.getCurrentInstance();
   String s = (String) context.getExternalContext().getRequestParameterMap().get("myFirst");
   if (s != null)
      return Integer.parseInt(s);
   return 0;
}

// Convert "myRows" request parameter to a primitive int.
public int getMyRows() {
   FacesContext context = FacesContext.getCurrentInstance();
   String s = (String) context.getExternalContext().getRequestParameterMap().get("myRows");
   if (s != null)
      return Integer.parseInt(s);
   return 10;
}

  • The marker attribute does not apply to "ol" or "ul" types. Supported values can be a selection from the drop-down list on the Display tab in the control's Properties view, or any raw html string. Default is no marker.
  • The layout attribute supported values can be selected from the drop-down list on the Display tab in the control's Properties view. Default is vertical.

Children

Any.

dataTable

A table whose content comes from a javax.faces.model.DataModel object, or a com.webmethods.caf.faces.data.ITableContentProvider object. Standard list-like containers, such as java.util.List are wrapped automatically as an ITableContentProvider. The following containers are wrapped automatically:

  • java.lang.Object array
  • java.util.List
  • javax.sql.rowset.CachedRowset

Each item in the list is mapped to a row in the table. Columns are configured by adding Basic Column controls as children.

To enable restful paging, you must set the tables's firstParamName property to the name of the request parameter from which the table derives its first property. For example, if the table binds the myFirst request parameter, where an example url is '/myTable?myFirst=10' to its first property, using a value binding expression #{param.myFirst}, you would set the value of the table's firstParamName property to "myFirst". Note that in order to bind the value of a request parameter to the table's first property, you must manually convert the request parameter value to a primitive int. You do not need to contain the table in a command Form to do restful paging.

To enable restful page sizing, you must set the tables's rowsParamName property to the name of the request parameter from which the table derives its rows property. For example, if the table binds the myRows request parameter, where an example url is '/myTable?myRows=10' to its rows property, you would set the value of the table's rowsParamName property to "myRows". To bind the value of a request parameter to the table's rows property, you must manually convert the request parameter value to a primitive int (see the following getMyRows() method). You do not need to contain the table in a command Form to do restful page sizing.

To enable "restful" sorting, you must set the tables's sortParamName property to the name of the request parameter from which the table derives its sort property. For example, if the table binds the mySort request parameter, where an example url is '/myTable?mySort=name-,description+' to the ordinals and ascending properties of its contained columns, you would set the value of the table's sortParamName property to "mySort". Note that in order to bind the value of a request parameter to the table's sort property, you must manually convert the request parameter value to an ISortInfo object (see the following getMySort() method). You do not need to contain the table in a command Form to do restful page sizing.

// Convert "myFirst" request parameter to a primitive int.
public int getMyFirst() {
     FacesContext context = FacesContext.getCurrentInstance();
     String s = (String)
context.getExternalContext().getRequestParameterMap().get("myFirst");
     if (s != null)
     return Integer.parseInt(s);
     return 0;
}
// Convert "myRows" request parameter to a primitive int.
public int getMyRows() {
     FacesContext context = FacesContext.getCurrentInstance();
     String s = (String)
context.getExternalContext().getRequestParameterMap().get("myRows");
     if (s != null)
     return Integer.parseInt(s);
     return 10;
}
// Convert "mySort" request parameter to structured ISortInfo data.
public ISortInfo getMySort() {
     FacesContext context = FacesContext.getCurrentInstance();
     String s = (String)
context.getExternalContext().getRequestParameterMap().get("mySort");
     return (s != null ? new SortInfo(s) : new SortInfo());
}

dataTabsList

A list of tabs loaded with content from a com.webmethods.caf.faces.data.ITableContentProvider object. For information about data types and restful paging, see the Simple List control (caf_h\dataSimpleList).

Children

Any.

dataTotal

A control that displays the count of records on the current page and total number of records in the table.

When you add the Data Total control to a location other than the tables's header or footer, you must specify the control's for property.

dataTotalSelected

A table that displays the number of selected rows in the table.

If you drop this control into a table's header or footer, you need to do nothing else. If you place this control elsewhere on a page, you must specify the control's for property.

dataTree

A tree consisting of content from a com.webmethods.caf.faces.data.tree.ITreeContentProvider object. An ITreeContentProvider creates a flattened view of the tree, iterating over the tree structure in depth-first order. You can choose to use a custom ITreeContentProvider. The Composite Application Framework library provides the following providers that you can use with tree data:

  • com.webmethods.caf.faces.data.tree.object.NodeTreeContentProvider
  • com.webmethods.caf.faces.data.tree.object.ListTreeContentProvider

NodeTreeContentProvider

The NodeTreeContentProvider works with tree data that is in the form of a tree object model such as data in an XML document loaded into a W3C DOM tree. You need to provide the NodeTreeContentProvider with a data model that implements the com.webmethods.caf.faces.data.tree.INode interface, and the NodeTreeContentProvider handles the rest.

The com.webmethods.caf.faces.data.tree.object.XMLDOMNode class is an INode that wraps a W3C DOM tree object model. You can instantiate the INode with the DOM node that serves as the root of the tree, and an XPath string that specifies a unique ID for each node. For example, with the following XML, use the uri attribute of each node for a unique ID:

<folder name='Root Folder' uri='/folders/'>
     <folder name='System' uri='/folders/system/'>
          ...
     </folder>
     <folder name='Public Folders' uri='/folders/public/'>
          ...
     </folder>
     <folder name='Users' uri='/folders/users/'>
          ...
     </folder>
</folder>

Use the XMLUtil.loadDocumentFromString() static utility method to load an XML document into a W3C DOM tree. Create an XMLDOMNode tree model using the document's root element as the tree model root, and using the uri attribute as each node's unique ID. With the INode tree model, you can instantiate a NodeTreeContentProvider. The tree control uses the ITreeContentProvider when you configure the control's value property.

org.w3c.dom.Document doc =
com.webmethods.caf.common.XMLUtil.loadDocumentFromString(xml);
INode root = new XMLDOMNode(doc.getDocumentElement(), "@uri");
ITreeContentProvider tree = new NodeTreeContentProvider(root);

ListTreeContentProvider

The ListTreeContentProvider works with tree data in the form of a list of rows, where each row has a property that identifies the parent of the row or the children of the row. Tree data stored in a relational database can take this parent/child form. You need to supply the ListTreeContentProvider with the list of rows, a ValueBinding expression that specifies a unique ID for each row, and a ValueBinding expression that specifies the parent ID for each row, or a ValueBinding expression that specifies a list of child IDs for each row.

In the following example, the row data is simply a list of String arrays. The first item in each String array is the row's parent ID, specified using a ValueBinding expression #{row[0]}). Rows where the parent ID is null are displayed as roots. The second item in each String array is the row's unique ID, specified using a ValueBinding expression #{row[1]}. The example below shows that in the first row, alice has two children, albert and agnes.

java.util.List list = java.util.Arrays.asList(new Object[] {
     new Object[] {null,"alice","apple","astros"},
     new Object[] {null,"bob","banana","brewers"},
     new Object[] {null,"carla","cantaloupe","cubs"},
     new Object[] {null,"dirk","dingleberries","dodgers"},
     new Object[] {null,"edna","eggplant","expos"},
     new Object[] {null,"frank","fruitcake","phillies"},
     new Object[] {"alice","albert","pineapple","texans"},
     new Object[] {"alice","agnes","cranapple","stars"},
     new Object[] {"bob","bertha","banan-o-rama","packers"},
     new Object[] {"bob","bradley","banana split","badgers"},
     new Object[] {"frank","felicity","fruit fly","eagles"},
     new Object[] {"frank","fredrick","fruitful","flyers"},
     new Object[] {"frank","fanny","fruition","76ers"},
});
ITreeContentProvider tree = new ListTreeContentProvider(list,
"#{row[1]}", "#{row[0]}", null);

Columns

You can add columns to the Tree control to display content for each tree row. Table columns, including special columns, like Select Row columns, work in Trees exactly the same as they do in Tables. Additionally, the Tree Toggle column controls allow users to toggle tree rows expanded and collapsed. Usually, each tree should include a Tree Toggle control.

You can sort columns by specifying a key using the column's sort property value. For more information, see the Standard Column control.

Children

javax.faces.Column, Basic Column control

dataTreeToggle

A special tree column that allows the user to toggle tree rows expanded and collapsed. The Tree Toggle control enables content. The tree renders the content of the column multiple times, once for each row displayed by the tree. The control's header facet automatically incorporates the functionality of the Column Sort Link control.

The control also optionally specifies the sorting behavior for the column. For more information, see the Standard Column control.

Children

Any.

disjointForm

Specifies a control that behaves like a conventional CommandForm. You can nest disjoint forms inside of other forms.

When a command control is invoked, all of the inputs contained by the form are submitted and processed. When the forms attribute specifies the IDs and the inputs of other forms, the invoked command control submits and processes the other forms.

If the invoked command control does not list any forms in its forms attribute and the nested form contains a list of forms in its forms attribute, then the invoked command submits and processes the forms listed in the nested form.

dragToMoveRows

Enables a user to add, remove, copy, or reorder the rows in a table by dragging the rows to perform the action.

If the Reorder attribute is set to true, the com.webmethods.caf.faces.data.IReorderableTableContentProvider interface for the target table's content provider is used to persist the new row order. The new row ordering is not sent to the server until the table's enclosing form is posted to the server after passing validation.

If the Add or Remove attributes are set to true, the target table's interface content-provider com.webmethods.caf.faces.data.IUpdateableTableContentProvider is used to persist the changes. The updated table information is not sent to the server until the table's enclosing form is posted to the server after passing validation.

If the Copy attribute is set to true and the Remove attribute is set to false, dragging a row from one table to a destination table adds a new row to the other table, without removing the original row from the first table. The destination table must have the Add attribute set to true. If the Remove attribute is set to true, the Copy attribute is ignored and dragging a row from one table to another removes the original row from the first table.

To populate the controls of a newly added row, the Drag to Move Rows behavior copies the value of controls with the same local ID from the dropped row into the new row.

For more information about adding, removing, and reordering rows, see "CAF.Table.Row.Model" in the CAF Development Help.

To customize Drag to Move Rows behavior, you can specify custom JavaScript code to execute when:

  • The user starts dragging a row which initiates the allowDrag handler.
  • The user drags a row over the table which initiates the allowDrop handler.
  • The user drops a row on the table which initiates the handleDrop handler.

The allowDrag handler is invoked every time a user tries to drag a row in this behavior's target table. It is passed two arguments, draggable and event. The draggable argument is the dragged row's CAF.Draggable object; the event argument is the browser mouse event that precipitates the drag. The handler should return true if the row if draggable is enabled, and false if dragging is not enabled.

The allowDrop handler is invoked every time a user tries to drag a row over the Drag to Move Rows target table's boundaries. allowDrop is passed two arguments, src and dst. The src argument is the dragged HTML element, which is a container for a temporary copy of the original row element in a temporary table. The dst argument is the HTML drop-target element, which is a container for the target table. The handler should return true if the row can be dropped and false if it cannot.

If the allowDrop handler returned true or was not specified, the handleDrop handler is invoked every time a user tries to drop a row on the Drag to Move Rows behavior's target table. It is passed two arguments: src and dst. The src argument is the dragged HTML element, which is a container for a temporary copy of the original row element, into a temporary table. The dst argument is the HTML drop-target element, which is a container for the target table.

The handler should return true if it fully handled the drop, and false to allow the default handleDrop processing to execute when the dropped row is from another table. If add is allowed to create a new row and copy the values of controls with the same local ID from the original dropped row to the new row; and when the dropped row is from the same table and reorder is allowed, to move the row to its new location.

For more information, see "CAF.Draggable Class" in the CAF Development Help.

dragToReorderColumns

Enables the user to reorder the columns of the target table by dragging the column header borders.

You can persist changes to the order of the columns by binding the columnDisplay attribute to a portlet-preferences-bean property, and binding the storedPreferences attribute to the storePreferences() method of a portlet-preferences-bean. In addition, manual processing is needed during the faces render phase to change the order of the columns in the table to match the persisted values.

dragToResize

Enables the user to resize a target control by dragging the target control's edges. Changes to the size of the control are not persisted.

If the target control is a table, resizing the vertical size of the table changes the number of rows-per-page displayed by the table. Use an Async Table with the clientSideCache attribute set to true (enables lazy loading).

dragToResizeColumns

Enables the user to resize the columns of the target table by dragging the column header borders.

You can persist changes to the column size by binding the columnWidths attribute to a portlet-preferences-bean property, and binding the storePreferences attribute to the storePreferences() method of a portlet-preferences-bean. In addition, manual processing is needed during the faces render phase to set the widths of the columns in the table to match the persisted values.

The columnWidths attribute is persisted as a comma-separated value string representation of a map, mapping column IDs to column widths. For example, the following string defines the width of colOne as 60%, the width of colTwo as 40%, and the width of colThree as 20px:

colOne=60%,colTwo=40%,colThree=20px

flash

Displays a Flash movie (SWF file). The control's value attribute must specify the movie source, or the control's href facet must contain a Portlet Url control that specifies the movie source.

You must specify the height and width values for the SWF file in the default view.

Children

UIParameter children specify movie parameters. All other children specify content to display if the browser does not have the minimum required version of the Flash Player installed (alternate content).

form

A standard JavaServer Faces form that renders an HTML form element.

Children

Any.

formattedMessage

Displays a message (such as validation messages) associated with a specific control with a fixed, specialized look-and-feel.

formattedMessages

Displays faces messages (such as validation messages) with a fixed, specialized look-and-feel.

formattedText

Displays the value of this control as formatted plain text. Preserves plain-text formatting (for example, newlines, tabs, and spaces).

frame

Displays a Web page within an IFrame. Either the control's value attribute must specify the URL of the page to frame, or the control's href facet must contain a Portlet Url control that specifies the URL of the page to frame.

gmap

A Google map. To use this control, you must configure the control's key property with a valid Google Maps API key. For more information, see Google Maps API Family. When registering a key, you must specify the host name and port number of the server. Use the host name and port number the user can see in the browser address bar when accessing the portlet or Web application. For example, if the user accesses the application using http://mws.example.com/, you need to use http://mws.example.com/ when registering for a key.

If the map is not rendered during the initial page load, that is, if the map is rendered only as part of an async refresh and not as part of the initial page, you must include a Google Map Key control as part of the initial page, configured with the Google Maps API key. Otherwise, you can ignore the Google Map Key control.

The center of the map is specified using the latitude and longitude property values. You can also specify the center of the map as follows:

  • The map's initialAddress property, if the latitude and longitude are both set to 0. You can format the address as a natural-language address; you can concatenate multiple lines into a single line with spaces, for example, 600 108th Ave NE, Bellevue, WA 98004 USA. You can specify a two-letter ISO-3166 country code using the initialCountry property as a country/locale hint, though it is generally not needed.
  • Auto-centering among the map's initial markers, if the map's latitude and longitude are both set to 0, its initialAddress is blank, and the map has markers.

You can add a variety of controls to the Google Map control:

  • Use the Map Navigation Control to add map navigation controls such as a zoom control, and a map type control.
  • Use Map Marker children of a Map Marker Group control to add individual markers to the map.
  • Use a Dynamic Map Marker List control to add a list of markers from a dynamic data source such as an array of rows from a SQL result set or an array of items from a Web service result to the map.

Scripting

The Google Maps API is a full-featured, client-side JavaScript API, and is fully accessible for use with the CAF Google Maps controls.

To access the GMap2 object, the Google Maps API map object, associated with a Google Map control, use the map property of the control's CAF client-side model object. The following example looks up the GMap2 object of the Google Map control model with an ID of myMap, and uses the Google Maps API to zoom in one level:

var map = CAF.model("#{caf:cid("myMap")}").map;
map.zoomIn();

Client-Side Model

The CAF client-side model object for the Google Map control extends from the CAF.Input.Model object. For more information, see information about the client-side model see "Client-Side Model" in the webMethods CAF Development Help.

The value of the model object is the coordinates of the map's center in String form, for example, 37.0625;-95.67706. The following script centers a Google Map control with an ID of myMap over the city of Bellevue, Washington:

CAF.model("#{caf:cid("myMap")}")
     .setValue("37.0625;-95.677068");

The CAF.GMap.stringToGLatLng() and CAF.GMap.gLatLngToString() functions convert string coordinates to and from a GLatLng object, the Google Maps API coordinates object.

You can also use the CAF client-side model to set a map's center with a natural-language address. The following script centers a Google Map control with an ID of myMap over the city of Bellevue, Washington:

CAF.model("#{caf:cid("myMap")}")
     .setAddress("600 108th Ave NE, Bellevue, WA 98004");

You can also auto-center a map among the map's markers with the client-side model's autoCenter() method. The following script centers a Google Map control with an ID of myMap among the markers on the map:

CAF.model("#{caf:cid("myMap")}").autoCenter(true);

Pass a value of true to the autoCenter() method to automatically zoom so that all markers on the map are visible; pass a value of false or nothing to auto-center without changing the zoom level.

Script Controls

You can also use the standard Script-category controls like Return Value Script or Invoke Script to manipulate the map with the standard client-side actions, such as getValue or setValue. You can also use the custom Return Map Value Script and Invoke Map Script controls to access special map-only properties and actions, such as getLatitude or setAddress. The Return Map Coords Script control enables specifying the latitude and longitude coordinates when invoking the setValue or setCoords action.

Children

Map Navigation control, Dynamic Map Marker List control, Map Marker Group control, or Invoke Map Script control

gmapDynamicMarkerList

A dynamic list of map markers for use with the Google Map control. The data model for this control is an com.webmethods.caf.faces.data.ITableContentProvider. A marker is rendered for each row in the table content provider.

The properties of this control can be bound to row properties, so that for example, if the provider's row object has street, city, state, and zipCode properties, the Dynamic Map Marker List control's initialAddress property could be bound to the expression #{marker.street} #{marker.city} #{marker.state} #{marker.zipCode}. assuming the control's row variable is set to its default value of marker. In this example, if the provider has two addresses (two rows), the control renders two markers, each with the initialAddress property bound to the an address.

Each marker's location is specified using the Dynamic Map Marker List control's latitude and longitude property values. You can also specify marker locations using the initialAddress property, if the latitude and longitude properties are both set to 0. You can format the address as a natural-language address with multiple lines concatenated into a single line with spaces, for example, 123 A Street NE, Bellevue, WA 98004 USA. You can specify the two-letter ISO-3166 country code with the initialCountry property as a country/locale hint.

You can specify the marker's icon using the Dynamic Map Marker List control's icon property. Use the standard Composite Application Framework marker icons by configuring the icon property with an icon color name such as red, purple, or magenta. In addition, you can use a custom icon by configuring the icon property with the URL of the icon, for example,http://maps.google.com/mapfiles/arrow.png. You can configure the marker's selected icon using a selectedImage property. If you use a custom icon, you might want to configure other properties of the Dynamic Map Marker List control, such as the iconSizeWidth, shadow, or shadowSizeWidth property.

The content of the marker list is used to render each marker's information (bubble) window. A user can click on a marker to display the information window, and also to select the marker, if the control's clickable property is set to true for the marker. A user can drag the marker to a new location if the controls's draggable property is set to true for the marker.

Scripting

The Google Maps API is a client-side JavaScript API that is accessible for use with the Composite Application Framework Google Maps controls. For more information, refer to Google documenation about Google Maps API.

To access the GMarker object (the Google Maps API marker object) associated with a particular marker in the marker list, use the get() method the control's CAF client-side model object to get the CAF model object for the marker, and then the getOverlay() method on the CAF marker model object to get the GMarker object. The following example looks up the GMarker object with an ID of "myMarker" from the marker list control model with an ID of "myMarkerList", and uses the Google Maps API to hide the marker:

var marker =
CAF.model("#{caf:cid("myMarkerList")}").get("myMarker")
   .getOverlay();
marker.hide();

You can configure the marker's ID on a table content provider using a binding expression with the provider's rowId property. You can also identify the marker using its zero-based row index. The following example looks up the first GMarker object from the marker list control model with an ID of "myMarkerList", and uses the Google Maps API to hide the marker:

var marker CAF.model("#{caf:cid("myMarkerList")}")
   .get(0).getOverlay();
marker.hide();

Client-Side Model

The CAF client-side model object for this control extends from the CAF.Table.Model object. For more information, see information about the client-side model in the webMethods CAF Development Help.

The object's value is the selected marker's ID, or if the control's multiple property is set to true, an array of selected marker IDs. For example, you can set the selected marker of the marker list with an ID of "myMarkerList" to the marker with an ID of "myMarker" with the following script:

var marker = CAF.model("#{caf:cid("myMarkerList")}")
   .setValue("myMarker");

You can get the coordinates of a particular marker's location in String form, for example, 37.0625;-95.67706, by using the getCoords() method of the client-side model. The following script gets the coordinates of the marker with an ID of "myMarker" in a marker list with an ID of "myMarkerList":

var coords =
CAF.model("#{caf:cid("myMarkerList")}").get("myMarker")
   .getCoords();

The CAF.GMap.stringToGLatLng() and CAF.GMap.gLatLngToString() functions convert String coordinates to and from a GLatLng object, the Google Maps API coordinates object. To set the coordinates, you must change the marker model's coordinates using the model's setCoords() method and then update the marker list with the changed marker model using the marker list model's set() method. The following script sets the marker with an ID of "myMarker" in a marker list with an ID of "myMarkerList":

CAF.model("#{caf:cid("myMarkerList")}")
   .set(CAF.model("#{caf:cid("myMarker")}")
   .setCoords("37.0625;-95.677068"));

You can use the CAF client-side model to set a marker's location with a natural-language address. The following script sets the location of the marker with an ID of "myMarker":

CAF.model("#{caf:cid("myMarkerList")}")
   .set(CAF.model("#{caf:cid("myMarker")}")
   .setAddress("600 108th Ave NE,
        Bellevue, WA 98004"));

Script Controls

You can use the standard script-type controls like Return Value Script or Invoke Script to manipulate the marker list with the standard client-side actions (such as getValue or setValue). You can also use the custom Return Map Value Script and Invoke Map Script controls to access special map-only properties and actions of the individual markers in a marker list such as getLatitude or setAddress. Additionally, the Return Map Coords Script control allows latitude and longitude coordinates to be specified separately when invoking a marker's setCoords action.

Children

Any. Children are rendered as the content of the marker's information (bubble) window

gmapInvokeScript

A control that connects a standard client-side JavaScript control-model action to a parent control's (or specified for control's) client-side event. The following standard actions are available:

  • raise actuates the command control specified by the control property
  • setDisabled enables or disables the input control specified by the control property, based on the value of the value property or value facet; true to disable, false to enable.
  • setValue sets the value of the control specified by the control property to the value of the value property or value facet.
  • setVisible shows or hides the control specified by the control property, based on the value of the value property or value facet; true to show, false to hide.
  • toggle shows the control specified by the control property if the control is hidden, hides the control specified by the control property if the control is visible.

In addition, the following map-specific actions are available:

  • setCoords: (map or marker) sets the map's center or the marker's location to the specified string coordinate pair, for example, "37.0625;-95.677068".
  • setAddress: (map or marker) sets the map's center or the marker's location to the specified natural-language address, for example, "600 108th Ave NE Bellevue, WA 98004".
  • setZoom: (map-only) sets the map's zoom level to a number between 1 (whole world) and about 20 (city block).
  • setMapType: (map-only) sets the map-type to either G_NORMAL_MAP, G_SATELLITE_MAP, or G_HYBRID_MAP.
  • autoCenter: (map-only) centers the map among the map's markers.
  • autoZoom: (map-only) zooms the map to fit the map's markers.
  • setLabel: (marker-only) sets the marker's ToolTip to the specified value.
  • setDescription: (marker-only) sets the contents of the marker's information (bubble) window to the specified value.
  • showInfoWindow: (marker-only) opens the marker's information (bubble) window.
  • hideInfoWindow: (marker-only) closes the marker's information (bubble) window.

You can nest other script controls inside the value facet of this script control to provide a value for actions that require a value.

Children

The Control Reference control can specify multiple controls to invoke client-side model actions.

gmapKey

Includes the Google Maps API in the page.

Note: Google Map Key is only needed if the main "Google Map - caf_h:gmap" is not rendered during the initial page load.

gmapMarker

An individual marker in a Map Marker Group control. The marker's location is specified using its latitude and longitude property values or using the marker's initialAddress property when the latitude and longitude are both set to 0. You can format the address as a natural-language address with multiple lines concatenated into a single line with spaces, for example, 123 Main Street, Bellevue, WA 98004 USA. You can specify a two-letter SO-3166 country code using the initialCountry property as a country/locale hint.

You can specify the marker's icon using properties such as the icon property. Use the standard Composite Application Framework marker icons by configuring the marker's icon property with the icon name such as red, orange, or yellow. You can also use a custom icon by configuring the icon property with the URL of the icon such as http://maps.google.com/mapfiles/arrow.png. You can configure the marker's selected icon similarly using the selectedImage property.

The content of the marker is used to render the marker's information (bubble) window. A user can click a marker to display its information window, and also to select the marker, if the marker's clickable property is set to true. A user can drag the marker to a new location if the marker's draggable property is set to true.

Scripting

The Google Maps API is a full-featured, client-side JavaScript API, and is fully accessible for use with the CAF Google Maps controls. For more information, refer to Google documenation about Google Maps API.

To access the GMarker object (the Google Maps API marker object) associated with this control, use the getOverlay() method of the control's CAF client-side model object. The following example looks up the GMarker object of the Map Marker control model with an ID of "myMarker", and uses the Google Maps API to hide the marker:

var marker = CAF.model("#{caf:cid("myMarker")}")
   .getOverlay();
marker.hide();

Client-Side Model

The CAF client-side model object for this control extends from the CAF.Table.Row.Model object. For more information, see information about the client-side model in the webMethods CAF Development Help.

The object's value is the marker's ID. You can get the coordinates of the marker's location, in string form (for example, 37.0625;-95.677068) by using the getCoords() method of the client-side model. The following script gets the coordinates of the marker with an ID of "myMarker":

var coords = CAF.model("#{caf:cid("myMarker")}").getCoords();

The CAF.GMap.stringToGLatLng() and CAF.GMap.gLatLngToString() functions convert string coordinates to and from a GLatLng object (the Google Maps API coordinates object). To set the coordinates, you must change the marker model's coordinates setting using the model's setCoords() method and then update the marker group with the changed marker model using the marker group model's set() method. The following script sets the marker with an ID of "myMarker" in a marker group with an ID of "myMarkerGroup":

CAF.model("#{caf:cid("myMarkerGroup")}")
   .set(CAF.model("#{caf:cid("myMarker")}")
   .setCoords("37.0625;-95.677068"));

You can use the CAF client-side model to set a marker's location with a natural-language address. The following script sets the location of the marker with an ID of "myMap":

CAF.model("#{caf:cid("myMarkerGroup")}")
   .set(CAF.model("#{caf:cid("myMarker")}")
   .setAddress("600 108th Ave NE,
      Bellevue, WA 98004"));

Script Controls

You can use the standard script-type controls like Return Value Script or Invoke Script to manipulate the marker a marker with the standard client-side actions such as getValue. You can also use the custom Return Map Value Script and Invoke Map Script controls to access special map-only properties and actions such as getLatitude or setAddress. Additionally, the Return Map Coords Script control enables specifying the latitude and longitude coordinates when invoking the setValue or setCoords action.

Children

Any. Composite Application Framework renders children as the content of the marker's information, bubble, window.

gmapMarkerGroup

A container for individual Map Marker controls. Use the Map Marker Group control as a child of the Google Map control.

Client-Side Model

The CAF client-side model object for this control extends from the CAF.Table.Model object. For more information, see information about the client-side model in the webMethods CAF Development Help.

The object's value is the selected marker's ID or if this control's multiple property is set to true, an array of selected marker IDs. For example, you can set the selected marker of the marker group with an ID of "myMarkerGroup" to the marker with an ID of "myMarker" with the following script:

CAF.model("#{caf:cid("myMarkerGroup")}")
   .setValue("myMarker");

Children

Map Marker control

gmapNavigationControl

A control that adds a navigation control to a Google map created using the Google Map control. The following types are supported:

  • GSmallMapControl: a condensed set of buttons for navigation and zoom
  • GLargeMapControl: full-size navigation and zoom buttons
  • GSmallZoomControl: zoom-in and zoom-out buttons
  • GScaleControl: a geographic scale indicator
  • GMapTypeControl: map-type buttons
  • GOverviewMapControl: a mini-map cut-out that displays a zoomed-out version of the main map view
gmapReturnCoordsScript

A client-side JavaScript that returns the latitude and longitude coordinate pair to the Google Map control. The coordinate pair is returned as a String. Typical use for this client-side JavaScript is to define value for the following script controls:

  • Parameter control
  • Invoke Script control
  • Invoke Map Script control

You can specify the latitude and longitude using the latitude and longitude properties or the latitude and longitude facets.

gmapReturnValueScript

A client-side JavaScript function that returns values to a Google Map control from client-side JavaScript control models. Typical use for this client-side JavaScript is to define value for the following script controls:

  • Parameter control
  • Invoke Script control
  • Invoke Map Script control

The following standard actions are available:

  • isDisabled: true if the control is disabled; false if the control is enabled.
  • isVisible: true if the control is visible; false if the control is hidden.
  • getValue: gets the control's value.

  • getCoords: (map or marker) gets the map's center or the marker's location as a string coordinate pair (for example, "37.0625;-95.677068").
  • getLatitude: (map or marker) gets the latitude of the map's center or the marker's location as a floating-point number (for example, 37.0625).
  • getLongitude: (map or marker) gets the longitude of the map's center or the marker's location as a floating-point number (for example, -95.677068).
  • getZoom: (map-only) gets the map's zoom level.
  • getMapType: (map-only) gets the map-type.
  • getLabel: (marker-only) gets the marker's ToolTip.
  • getDescription: (marker-only) gets the contents of the marker's information (bubble) window
  • isSelected: (marker-only) true if the marker is selected; false if the marker is not selected.

Children

You can use the Control Reference control to specify multiple controls to get the value of.

growler

A control that displays client-side notifications.

This control is used by the actions of other script controls, for example, growl instead of setVisible. You can also use the Growler control directly in JavaScript.

//This requires a control with the id of 'growler' to be present on the page
CAF.Growler.growl('#{caf:cid("growler")}', "Message text");

includeHtml

Includes the contents of an HTML file into the current page, as specified by the control's value attribute. The value attribute must reference an HTML file in the current Web application, relative to the web application's WebContent directory. For example, the HTML file myfile.html, located in the files subdirectory of the WebContent directory, can be referenced by specifying a value of /files/myfile.html.

If the file is in the current web application and you set the evaluate attribute to true, JSF expressions embedded in the file are evaluated on every request.

includeResourceBundle

Includes a java.util.ResourceBundle in the current page in the form of a basic client-side JavaScript object (also referred to as a client-side resource bundle). The client-side object's properties map to the resource bundle's keys. The resource bundle name is specified using the control's value attribute.

You can reference the client-side object using the CAF.getBundle(id) client-side JavaScript method. The id argument should be the client-side ID of the control. For a control with an id of myControlId, and a page bean with a name of myPageBean, the following line (in a Script Block control) stores the client-side object in the MY_RESOURCES global variable, and then alerts the resource keyed by the string my-key:

var MY_RESOURCES = CAF.getBundle("#{myPageBean.clientIds['myControlId']}");
alert(MY_RESOURCES["my-key"]);

includeScript

Includes an external JavaScript file in the page, as defined in the control's value attribute. Valid values include the URL of an external script file, such as http://mycompany.com/car.js, or when the value property begins with a slash(/), it can reference a JavaScript file in the current Web application, relative to the web application's WebContent directory.

For example, when the file myfile.js script located in the myfolder subdirectory of the WebContent directory, you can reference the script using the value/myfolder/myfile.js. If the script is in the current Web application and you set the evaluate attribute to true, the JSF expressions embedded in the file are evaluated on every request.

includeStylesheet

Includes an external CSS stylesheet in the current page. The stylesheet is specified by the control's value property. Valid values for the value property include the URL of an external stylesheet, such as http://mycompany.com/mystyle.css, or when the value property begins with a slash (/), it might reference a CSS stylesheet in the current Web application, relative to the Web application's WebContent directory.

For example, you can reference the stylesheet named mystyle.css, located in the myfolder subdirectory of the WebContent directory by the value /myfolder/mystyle.css. If the file is in the current Web application, and you set theevaluate property to true, JSF expressions embedded in the file are evaluated on every request.

inputAutocompleteText

A text input control with an auto-complete popup menu. The Autocomplete Text Input control's behavior is equivalent to other single-select controls, such as a Dropdown. Selection options are defined by specifying javax.faces.SelectItem or javax.faces.SelectItems as children of this control. For more information, see the control documentation for the standard JSF controls Option and Option Group.

If the control has a single Option Group bound to a provider that implements com.webmethods.caf.faces.data.IFilterableSelectItemGroupProvider, and the provider's isFilterable() method returns a value of true, filtering the list of auto-complete values is done on the server by the provider, using the provider's filter attribute to sort and select from the collection of items returned by its getSelectItemContentProviders() method. The default ISelectItemGroupProvider, which is com.webmethods.caf.faces.data.object.DefaultSelectItemContentProvider, implements the IFilterableSelectItemGroupProvider. However, the default returns false for the isFilterable()method.

If the control is not bound to a provider that implements IFilterableSelectItemGroupProvider, then auto-completion is done only on the client, using the standard common search keyword rules such as * = wildcard, space = and, quotes = exact phrase.

You can set the default filter for this control using the filter attribute.

You can only use this control in a Form control.

Children

javax.faces.SelectItem (JSF Option control) and javax.faces.SelectItems (JSF Option Group control).

inputDate

A calendar date/time input control. The value attribute of the Date Input control must be a java.util.Date object.

Bind the value property to a java.lang.String when the valuePattern property is set to the pattern which describes the value's format. The pattern must use the syntax described by the java.text.SimpleDateFormat Javadocs.

You can only use this control in a Form control.

inputDateRange

A control that inputs a calendar date range. Define the value property of the Date Range control as a com.webmethods.caf.faces.data.object.DateRange object. A Date Range object has three properties, fixedRange, relativeRange, and date. Use these attributes to specify one of the following:

  • A fixed start and end date such as 2000-01-01 to 2000-02-01:
    • fixedRange = A period of time in milliseconds
    • relativeRange = DateRange.FIXED
    • date = A start date, for a positive period of time, or an end date, for a negative period of time.
  • A fixed period of time, relative to the current date such as the last thirty days:
    • fixedRange = A period of time in milliseconds
    • relativeRange = DateRange.FIXED
    • date = Null
  • A relative period time, relative to the current date such as this month:
    • fixedRange = 0
    • relativeRange = A period of time (an enumerated value) OR DateRange.FIXED
    • date = Null

The Date Range object supports the following relativeRange property values:

  • DateRange.FIXED: Not a relative-range, specified in milliseconds by fixedRange property.
  • DateRange.THIS_DAY: Midnight this morning to the second before midnight tonight.
  • DateRange.PREVIOUS_DAY: Midnight yesterday morning to the second before midnight last night.
  • DateRange.NEXT_DAY: Midnight tomorrow morning to the second before midnight tomorrow night.
  • DateRange.THIS_WEEK: Midnight on the first morning of the week such as Sunday in the US to the second before midnight on the last night of the week such as Saturday in the US.
  • DateRange.PREVIOUS_WEEK: Midnight on the first morning of the previous week such as Sunday in the US to the second before midnight on the last night of the previous week such as Saturday in the US.
  • DateRange.NEXT_WEEK: Midnight on the first morning of next week such as Sunday in the US to the second before midnight on the last night of next week such as Saturday in the US.
  • DateRange.THIS_MONTH: Midnight on the first of the month to the second before midnight on the last night of the month such as 28th, 29th, 30th, or 31st.
  • DateRange.PREVIOUS_MONTH: Midnight on the first of the previous month to the second before midnight on the last night of previous month such as 28th, 29th, 30th, or 31st.
  • DateRange.NEXT_MONTH: Midnight on the first of next month to the second before midnight on the last night of next month such as 28th, 29th, 30th, or 31st.
  • DateRange.THIS_YEAR: Midnight on January 1 of this year to the second before midnight on December 31 of this year.
  • DateRange.PREVIOUS_YEAR: Midnight on January 1 of the previous year to the second before midnight on December 31 of the previous year.
  • DateRange.NEXT_YEAR: Midnight on January 1 of next year to the second before midnight on December 31 of next year.

A Date Range object can calculate the appropriate start and end dates for its date-range, using its calculateStart() and calculateEnd() methods. For an infinite range, calculateStart() and calculateEnd() return null. The calculateStart() method is less than or equal to the calculateEnd() returned value.

You can only use this control in a Form control.

inputDragAndDropFile

A control that enables a user to upload a file via drag and drop. The model for this control (the type of object to which you bind the control's value attribute) is javax.servlet.http.Part for a single file

or java.util.List>javax.servlet.http.Part< for multiple files.

For each Part object, you can get:

  • The file's content-type using the getContentType() method.
  • The file's original name using the getName() method.
  • The file's full content using the getInputStream() method.

    When you are finished with a Part, call its delete() method to release its associated resources, such as its temp file on disk or bytes in memory.

    You can only use this control in a Form control.

inputExtendedSelectManyListbox

Specifies a multi-select list box that displays icons and extra-wide titles and descriptions. Selection options are defined by specifying javax.faces.SelectItem or javax.faces.SelectItems as children of this control. For more information, see the control documentation for the standard JSF controls Option and Option Group. The Extended Select-Many Listbox control's value is an array of selected values.

You can only use this control in a Form control.

Children

javax.faces.SelectItem (JSF Option control) and javax.faces.SelectItems (JSF Option Group control).

inputExtendedSelectOneListbox

Specifies a single-select list box that displays icons and extra-wide titles and descriptions. Selection options are defined by specifying javax.faces.SelectItem or javax.faces.SelectItems as children of this control. For more information, see the control documentation for the standard JSF controls Option and Option Group.

You can only use this control in a Form control.

Children

javax.faces.SelectItem (JSF Option control) and javax.faces.SelectItems (JSF Option Group control).

inputFile

A control that enables a user to upload a file. The model for this control (the type of object to which you bind the control's value attribute) is javax.servlet.http.Part for a single file

java.util.List for multiple files.

For each Part object, you can get:

  • The file's content-type using the getContentType() method.
  • The file's original name using the getName() method.
  • The file's full content using the getInputStream() method.

    When you are finished with a Part, call its delete() method to release its associated resources, such as its temp file on disk or bytes in memory.

    You can only use this control in a Form control.

    You can also upload files with asynchronous commands.

inputFilter

A standard input control for filtering a specified select or table control. You can only use this control in a Form control.

Select Filtering

The following select controls are filterable:

  • Autocomplete Text Input
  • Combobox
  • Extended Select-Many Listbox
  • Extended Select-One Listbox
  • Swapbox

Because the Combobox and the Auto-complete Text Input controls enable users to type in an auto-completed value, you should not use these controls with a Filter Input control. However, you could use an IFilterableSelectItemGroupProvider provider with these controls.

If a select control has a single Option Group bound to a provider that implements com.webmethods.caf.faces.data.IFilterableSelectItemGroupProvider, and the provider's isFilterable() method returns a value of true, then the filtering is done on the server, by the provider, using the provider's filter property value to filter the collection of items returned by its getSelectItemContentProviders() method.

The default ISelectItemGroupProvider, which is com.webmethods.caf.faces.data.object.DefaultSelectItemContentProvider, implements IFilterableSelectItemGroupProvider, but by default returns a value of false for the isFilterable()method.

If a select control is not bound to a provider that implements IFilterableSelectItemGroupProvider, the filtering is done on the client, using the standard common search keyword rules such as * = wildcard, space = and, quotes = exact phrase.

Table Filtering

If a table control is bound to com.webmethods.caf.faces.data.IFilterableTableContentProvider, and the provider's isFilterable() method returns a value of true, the filtering is done on the server, by the provider, using the provider's filter property value to filter the rows over which the provider can iterate.

With the default IFilterableTableContentProvider implementations (com.webmethods.caf.faces.data.object.FilterableListTableContentProvider and com.webmethods.caf.faces.data.object.FilterableSelectableListTableContentProvider), you must initialize the provider with a binding expression to use to calculate the value to filter on for each row. For example, you might use a filter value binding of #{row.title} #{row.description} to filter on the title and description fields of each row.

If a table control is not bound to an IFilterableTableContentProvider that is filterable, then filtering is done on the client, over the entire textual content of the row, using the standard common search keyword rules such as * = wildcard, space = and, quotes = exact phrase.

Select and Table Filtering

You can set the default filter for a table or select control by means of the select control's filter property value.

Children

javax.faces.SelectItem (JSF Option control) and javax.faces.SelectItems (JSF Option Group control).

inputHTML

A WYSIWYG HTML editor input control. You can only use this control in a Form control.

When using the WYSIWYG HTML editor input control in a Modal Dialog, you must set the 'Lazy Load' property of the dialog to 'true'.

inputInPlaceText

A single-line text input that is displayed like a static text output until clicked by the user. You can only use this control in a Form control.

inputSecret

A password-style text input control. You can only use a Secret Input control in a Form control.

inputSimpleSchedule

A simple schedule input control that enables the user to input a date/time interval. Use the com.webmethods.caf.faces.data.object.Schedule object as the value property of this control. The Schedule model allows for an interval of time, expressed by a com.webmethods.rtl.date.DateFields object, plus a relative starting date, defined in the at attribute as a DateFields object.

The DateFields object has the same fields as a java.util.Calendar object, such as Calendar.DAY_OF_YEAR, Calendar.HOUR_OF_DAY, and Calendar.MINUTE. However, unlike the Calendar object, the DateFields object allows setting the fields independently from each other. The parse() and format() methods of DateFields allow the fields to be converted to and from a string representation. For example, the string representation for 5 days is represented as 5D and the string representation for 12:30 AM is 00:30.

You can represent a schedule that executes every 5th day at 12:30 AM using a Schedule object with an interval of 5D and an at attribute of 00:30. You can represent a schedule that executes every 5th day, without a specific start time, by using a Schedule object with an interval of 5D and no at attribute value.

The simple schedule input control enables a user to configure only the day (Calendar.DAY_OF_YEAR or nD), hour (Calendar.HOUR_OF_DAY or hh:00), and minute (Calendar.MINUTE or 00:mm) fields of the schedule interval, and only the hour (Calendar.HOUR_OF_DAY or hh:00) and minute (Calendar.MINUTE or 00:mm) fields of the schedule at attribute.

You can only use this control in a Form control.

inputSwapBox

A swapbox that is two list boxes with options that shuttle between them. Selection options are specified using Option and Option Group children. The control's value is an array of selected values.

You cannot drop an input control outside of a Form control.

Children

  • javax.faces.SelectItem, Option control
  • javax.faces.SelectItems, Option Group control
inputText

A single-line text input. You can only use a Text Input control in a Form control.

inputTextarea

A multi-line text input control. You can only use a Multi-Line Text Input control in a Form control.

message

Message output for a component. This is an enhanced variation of the standard h:message control.

messages

Message output for a all components. This is an enhanced variation of the standard h:messages control.

modalDialog

A control that encapsulates the style and behavior of a modal dialog. A modal dialog forces the user to choose an option in the dialog, usually by clicking a button, before the user can do anything outside of the dialog. Compare to a Modeless Dialog control where the user can perform actions outside the dialog before interacting with the Modeless Dialog control.

The Modal Dialog control is initially hidden. When toggled visible, the Modal dialog disables all other controls on the page until it is changed to hidden.

Like other hideable controls, this control can be toggled between visible and hidden through client-side JavaScript code. Toggle controls encapsulate this code within controls that can be created and configured visually within CAF. For more information, see the topics "Hideable Controls" and "Toggle Controls" in the section "User Interface Controls Concepts" in the webMethods CAF Development Help.

This control has four facets: title, submit, cancel, and other. The last three facets encapsulate the default layout for the submit, cancel, and various other buttons. For example, if you place a cancel button in the cancel facet, and an OK button in the submit facet, by default the modal dialog places the cancel button in the bottom-right corner of the dialog, with the OK button directly to its left. The title facet displays a title for the dialog.

Children

Any. Children of this control are displayed as the dialog's content.

modelessDialog

A panel that encapsulates the style and behavior of a modeless dialog. A modeless dialog allows the user to continue to manipulate controls outside of the dialog, without having to choose an option in the dialog, usually by clicking a button, right away. The behavior of a Modeless Dialog is less restrictive than a Modal Dialog, which requires the user to make a selection before performing actions outside the dialog box. The Modeless Dialog control is initially hidden.

Like other hideable controls, you can switch this control between visible and hidden through the use of client-side JavaScript code. For more information, see the topics "Hideable Controls" and "Toggle Controls" in the section "User Interface Controls Concepts" in the webMethods CAF Development Help.

This control has four facets: title, submit, cancel, and other. The last three facets are intended to encapsulate the default layout for the submit, cancel, and miscellaneous other buttons. For example, if you place a Cancel button in the cancel facet, and an OK button in the submit facet, by default the modeless dialog lays out the cancel button in the far-right corner of the dialog, with the OK button directly to its left. The title facet is intended to display a title for the dialog.

Children

Any. Children of this control are displayed as the dialog's content.

newsfeed

A control that displays the entries of a syndicated feed, Really Simple Syndication (RSS) or Atom syndication format.

oneWayToggleButton

A button that toggles the client-side visibility of a single control, or the server-side rendered property of a single control. For more information, see information about toggle controls in the webMethods CAF Development Help.

For more information about hiding controls, see information about concealable controls in webMethods CAF Development Help.

Children

Any. Children are displayed as a button label after the content of the value property.

oneWayToggleCheckbox

A check box that toggles the client-side visibility of a single control, or the server-side rendered property of a single control. For more information, see information about toggle controls in the webMethods CAF Development Help.

For more information about hiding controls, see information about concealable controls in webMethods CAF Development Help.

Children

Any. Children are displayed as a check box label after the content of the value property.

oneWayToggleLink

A link that toggles the client-side visibility of a single control, or the server-side rendered property of a single non-hideable control. For more information, see information about toggle controls in the webMethods CAF Development Help.

For more information about hiding controls, see information about concealable controls in webMethods CAF Development Help.

Children

Any. Children are displayed as a link label after the content of the value property.

outputButton

A control that draws a simple HTML button. This control is used to load a URL or to invoke client-side actions using com.webmethods.caf.faces.portleturl.PortletUrlScript children controls.

When used as an alternative to the Link control, loads the URL specified by this control's value parameter. Add the javax.faces.Parameter to parameterized the URL.

Children

Any. Children are displayed as button label after the value of the label attribute.

Add javax.faces.Parameter children as request parameters to the link.

Use com.webmethods.caf.faces.portleturl.PortletUrlScript children to hook into client-side javascript events such as onclick.

outputFormat

A control that renders parameterized text. The control formats text with parameters using java.text.MessageFormat#format().

outputHeader

Displays an HTML section header such as heading levels H1-H6. The header's level (1-6) is specified using the control's level attribute. The value attribute specifies the heading text, which is displayed before the control's children (if any).

Children

Command, Graphic, or Output controls (displayed after the text specified in the value attribute).

outputHorizontalRule

Displays a simple horizontal section separator.

outputIcon

An icon, wrapped by an optional basic navigation link to a URL specified by the control's value attribute. The URL may be parameterized by adding javax.faces.Parameter children.

Children

Any. Children are displayed as the icon label, after the icon.

javax.faces.Parameter children are added as request parameters to the link.

com.webmethods.caf.faces.portleturl (Portlet URL control) children can be used to hook into client-side JavaScript events such as onClick.

outputLabel

A label for a form field.

outputLink

A link to a URL specified by this control's value attribute. The URL may be parameterized by adding javax.faces.Parameter children.

Children

Any. Children are displayed as link label, after value of label property.

javax.faces.Parameter children are added as request parameters to the link.

com.webmethods.caf.faces.portleturl.PortletUrlScript children can hook into client-side javascript events such as onClick.

outputText

A control that renders text.

outputTruncatedText

Defines a variation of the Output Text control that truncates the text at the specified length and appends '...'. The full string is rendered as the title attribute (tooltip) if no title attribute is specified.

panelBlock

Displays the contents of the panel in a block-level HTML div element.

Children

Any.

panelBlockEdge

Displays contents of the panel in a block-level HTML div element. Controls placed in the left edge facet are rendered and docked to the left edge of the panel. Controls placed in the right edge facet are rendered and docked to the right edge of the panel.

Children

Any.

panelDisableable

Displays the contents of the panel in a block-level HTML div element. The Disableable Panel provides a disabled attribute, which affects the client-side state of the contained controls.

The client-side disabled state of the Disableable Panel is set with the setDisabled(disabled) method of the control's client-side model. For more information, see the topic "Client-Side Model" in the CAF Development Help.

Children

Any.

panelHideable

A block panel that a user can switch from visible to hidden and back to visible. You must use JavaScript code with the toggle controls encapsulated in the code. For more information, see the topics "Hideable Controls" and "Toggle Controls" in the section "User Interface Controls Concepts" in the webMethods CAF Development Help.

Children

Any.

panelInlineHideable

An inline panel that toggles between visible and hidden using JavaScript. Toggle controls encapsulate the JavaScript within controls that are created and configured visually, using the Composite Application Framework. For more information about hiding controls, see information about concealable controls in webMethods CAF Development Help.

Children

Any.

panelOverlay

A panel that lays on top of another panel or the entire page when toggled visible using client-side JavaScript. For more information, see the topics "Concealable Controls" and "Toggle Controls" in the CAF Development Help.

Children

Any.

panelPageGroup

A panel that renders a portlet-like grouping UI around a large section of content, for example, multiple property groups.

The Disabled attribute in this control affects only the client-side disabled state of contained controls and not the server-side state. The client-side disabled state of this and other controls is toggled with the setDisabled(disabled) method on the control's client-side model.

Children

Any.

panelPopup

A panel that appears as a pop up when the user clicks a second control. Specify the control that opens the pop up panel in the for attribute.

The suggested value for the CSS Class attribute for this control is portlet-menu. To make a vertical list of links look more like a pop up menu, set the CSS Class to caf-popup-menu.

panelPropertyGroup

A container for a group of form fields around a group of related property lines. For more information, see Property Line.

The Disabled attribute in this control affects only the client-side disabled state of contained controls and not the server-side state. The client-side disabled state of this and other controls is toggled with the setDisabled(disabled) method on the control's client-side model.

panelPropertyLine

A label and content container for a form field. Displays its contents on one line with a label and optional extended description, such as on a properties page. If the property-line contains a control that has generated some error or informational messages, the property-line displays those messages.

panelPropertySubGroup

A container for a sub-group of form fields. Renders a sub-grouping UI around a group of form fields.

The disabled attribute of the Property Sub-Group control affects only the client-side disabled state of contained controls and not their server-side state. The client-side disabled state of controls are toggled with the setDisabled(disabled) method of the control's client-side model.

panelScrolling

A block panel with a fixed width or height that scrolls to accommodate overflowing content. You must specify the height to scroll vertically, and the width to scroll horizontally.

panelSearchBar

A panel that provides the user with a search query builder.

Although this control can be used in any generic JSF application, it is typically used in the Search Bar portlet of a Search Bar/Search Results portlet pair. You can create an integrated Search Bar portlet with the New Portlet wizard, selecting the Search Bar Portlet option on the first page of the wizard. The two portlets are connected by wiring; the lastSearchState property of the Search Bar portlet is wired to the queryString property of the Search Results portlet.

panelStack

A panel that renders only one of its children components. The Stack Panel's value property specifies the ID of the child to render. If child ID is not specified, the first child component is rendered.

Children

Any.

panelStaticCell

Divides a Static Row control into cells. It is best to set the width of each Static Cell to a percentage such that the width of all the cells in the row add up to 100%. Cells without width settings may wrap in unexpected ways.

panelStaticRow

A static grid row, divided by Static Cell control.

Children

Static Cell control

panelSubmitGroup

A container for a group of submit buttons.

The Submit Group control contains Submit, Cancel, Previous, and Next buttons and provides a standard location and default width for the buttons. Place the Submit, Cancel, Previous, and Next buttons in their respective facets; you can add other buttons as non-facet children of the panel.

Children

Any.

panelTitlebarTabsWrapper

A panel placed around a tabs control that visually merges the set of tabs with the Page Group label directly above them.

popupMenus

Web application top-level navigation control as a list of links. Selecting or hovering over one of the top-level links displays the children of that page as a pop-up menu of second-level links.

progressBar

A panel that displays a progress indicator.

progressDialog

A progress bar dialog that overlays another panel or the entire page when toggled to visible through client-side JavaScript code. For more information, see the topic "Hideable Controls" in the section "User Interface Controls Concepts" in the webMethods CAF Development Help.

raiseOnChange

Raises a specified command when the value of the target control is changed.

refreshButton

A button that asynchronously refreshes the content of a specified control.

Children

Any. Children are displayed as button label (after value of the label attribute).

refreshIcon

An icon that asynchronously refreshes the content of a specified control.

Children

Any. Children are displayed as the icon label (after the icon).

refreshInterval

A client-side script that asynchronously refreshes the content of a specified control at a specified interval.

refreshLink

A link that asynchronously refreshes the content of a specified control.

Children

Any. Children are displayed as a link label (after the value of the label attribute).

scriptBlock

A control that adds a JavaScript block to the current page, containing the JavaScript code specified by the control's value attribute.

scriptControlReference

A control used to specify multiple controls with which the Invoke Script control operates. The Control Reference is specified as a child to the Invoke Script control.

scriptCustom

A control that connects client-side JavaScript functions to parent control client-side events. To connect to a client-side event, place the Custom Script control as a child of a parent Input or Output control. Children com.webmethods.caf.faces.script.ScriptParameter controls are used to define parameters to use inside custom script code blocks. For more information, see the Parameter control.

Children

com.webmethods.caf.faces.script.ScriptParameter, see the Parameter control; children specify additional parameters used in the custom script code.

scriptInvoke

A control that connects a standard client-side JavasScript control-model action to a parent control's or specified for control's client-side event. The following actions are available:

  • raise activates the command control specified by the control property.
  • setDisabled enables or disables the input control specified by the control property, based on the value of the value property or value facet; true to disable, false to enable.
  • setValue sets the value of the control specified by the control property to the value of the value property or value facet.
  • setVisible shows or hides the control specified by the control property, based on the value of the value property or value facet; true to show, false to hide.
  • toggle shows the control specified by the control property if the control is hidden, hides the control specified by the control property if the control is visible.

Other script controls are nested inside the value facet of this script control to provide a value for actions that require a value.

Children

com.webmethods.caf.faces.script.ControlReference is used to specify multiple controls to invoke a client-side model action. For more information, see the Control Reference control.

Standard Facets

Defines the value used to specify an action returned from another script or defined as a ScriptParameter. Drop the following controls into the value facet:

  • com.webmethods.caf.faces.script.ScriptParameter For more information, see the Parameter control.
  • com.webmethods.caf.faces.script.CustomScript For more information, see the Custom Script control.
  • com.webmethods.caf.faces.script.GetValueScript For more information, see the Return Value Script control.
scriptParameter

A control used to specify parameters for the Custom Script control. The parameter defines a client-side named variable whose value is set depending on the configured valueType. It is specified directly, taken from the client control, or returned back from another JavaScript function.

scriptReturnValue

A control that enables a client-side JavaScript function that returns values from the control client-side model. Usually this script is used to define value for:

  • com.webmethods.caf.faces.script.ScriptParameter For more information, see the Parameter control.
  • com.webmethods.caf.faces.script.InvokeScript For more information, see the Invoke Script control.
selectBooleanCheckbox

Specifies a Boolean check box that is a standard JavaServer Faces control. You can only use this control in a Form control.

selectBooleanRadioButton

A single radio button. Typically, two or more controls are used together, grouped with the name attribute. The model is java.lang.Boolean (true if checked).

You can only use this control in a Form control.

selectManyCheckbox

Specifies a user interface control that contains a group of check boxes. Selection options are defined by specifying javax.faces.SelectItem or javax.faces.SelectItems as children of this control. For more information, see the control documentation for the standard JSF controls Option and Option Group. The control's value attribute (the current selection values) is expressed as an array of values.

You can only use this control in a Form control.

Set the other attribute to true to add a value to the list of options in the Checkbox Group. When the other property is set to true, an Other button is rendered at the end of the list of check boxes. When the user clicks the Other button, a dialog box opens and prompts the user for a new value. When the user clicks the OK button, a new check box item is added to the group with the user-specified value. Default is false.

Children

javax.faces.SelectItem (JSF Option control) and javax.faces.SelectItems (JSF Option Group control).

selectManyListbox

A multi-select list box. Selection options are defined by specifying javax.faces.SelectItem or javax.faces.SelectItems as children of this control. For more information, see the control documentation for the standard JSF controls Option and Option Group. The control's value attribute (the current selection values) is expressed as an array of values.

You can only use the Select-Many Listbox control in a Form control.

Children

  • javax.faces.SelectItem, Option control
  • javax.faces.SelectItems, Option Group control)
selectOneButton

A button control that behaves like a select-one group control. Clicking the button toggles it through the options in the group. Selection options are defined by specifying javax.faces.SelectItem or javax.faces.SelectItems as children of this control. For more information, see the control documentation for the standard JSF controls Option and Option Group.

You can only use this control in a Form control.

Children

javax.faces.SelectItem (JSF Option control) and javax.faces.SelectItems (JSF Option Group control).

selectOneCombobox

A single-select combination dropdown and text-input control that enables a user to type a selection value. The control also allows icons and extra-wide titles/descriptions. Selection options are defined by specifying javax.faces.SelectItem or javax.faces.SelectItems as children of this control. For more information, see the control documentation for the standard JSF controls Option and Option Group.

You can only use a Combobox control in a Form control.

Children

  • javax.faces.SelectItem, Option control
  • javax.faces.SelectItems, JSF Option Group control
selectOneLink

Specifies a link that behaves like a select-one group. Clicking the link toggles it through the options in the group. Selection options are defined by specifying javax.faces.SelectItem or javax.faces.SelectItems as children of this control. For more information, see the control documentation for the standard JSF controls Option and Option Group.

You can only use this control in a Form control.

Children

javax.faces.SelectItem (JSF Option control) and javax.faces.SelectItems (JSF Option Group control).

selectOneListbox

A single-select list box that is a standard JavaServer Faces control. The selection options are specified using javax.faces.SelectItem, Option and javax.faces.SelectItems Option Group children.

You can only use the Select-One Listbox control in a Form control.

Children

  • javax.faces.SelectItem, Option control
  • javax.faces.SelectItems, Option Group control).
selectOneMenu

A single-select dropdown. The selection options are specified using javax.faces.SelectItem, Option and javax.faces.SelectItems Option Group children.

You can only use the Dropdown control in a Form control.

Children

  • javax.faces.SelectItem, Option control
  • javax.faces.SelectItems, Option Group control).
selectOneOutputText

Specifies text output that uses the select-one model dialog control. Model options are defined by the following children:

  • The Option input control - javax.faces.SelectItem()
  • The Option Group input control - javax.faces.SelectItems()

The selected item is the item with a value that matches this control's value attribute. The selected item is the item displayed in the user interface.

selectOneRadio

A group of radio buttons. Selection options are specified using Option and Option Group children. The selection options are specified using javax.faces.SelectItem, Option and javax.faces.SelectItems Option Group children.

You can only use the Radio Button Group control in a Form control.

Children

  • javax.faces.SelectItem, Option control
  • javax.faces.SelectItems, Option Group control).
selectOneTabs

A tab control that behaves like a select-one group. Selection options are defined by specifying javax.faces.SelectItem or javax.faces.SelectItems as children of this control. For more information, see the control documentation for the standard JSF controls Option and Option Group.

You can only use this control in a Form control.

Children

javax.faces.SelectItem (JSF Option control) and javax.faces.SelectItems (JSF Option Group control).

servletCommandForm

WARNING: This tag has been deprecated. Replace with a Form tag.

A JSF command form that posts directly to the JSF servlet instead of the containing portlet.

specificFormattedMessages

Displays messages for specific components, such as validation messages, with a fixed or specialized format.

specificMessages

Displays faces messages for specific components, such as validation messages, with a customizable look-and-feel.

staticMenus

Web application top-level navigation control and optional second-level and third-level pages as a list of links. If this control's depth property is set to 1, only the toplevel links are displayed. If this control's depth property is set to 2, the top-level links are displayed, and if the current page is one of the top-level pages or a descendent of one of the top-level pages, the children of that top-level page are displayed as the second-level links. If this control's depth property is set to 3, the top-level and second-level links are displayed the same way as a depth of 2, and if the current page is one of the second-level pages or a descendent of one of the second-level pages, the children of that second-level page are displayed as the third-level links.

synchronizeValues

Synchronizes the client-side values of two or more controls.

toggleButton

A button that toggles the client-side visibility of a group of controls, or the server-side rendered property of a group of non-hideable controls. Only the selected control from the group specified in the Toggle Button control's value property is visible. For more information, see information about toggle controls in the webMethods CAF Development Help.

For more information about hiding controls, see information about concealable controls in webMethods CAF Development Help.

The selection options are specified using the javax.faces.SelectItem or javax.faces.SelectItems by value specifying a control ID. For more information, see the Option conrol or the Option Group control.

Children

  • javax.faces.SelectItem, Option control
  • javax.faces.SelectItems, JSF Option Group control
toggleInitiate

A control that executes the toggle behavior for a toggle control.

Typically, you place a toggle control before the controls it toggles, and in these instances, an Initiate Toggle control is not needed. However, if you place a toggle control after one of the controls it toggles, you need to add an Initiate Toggle control to the view. Place the Initiate Toggle control before the first of of the controls that are toggled and at the same level as the toggle control. For example, if the toggle control is in a table column, the Initiate Toggle control is the first control in the first column of the table. Set the Initiate Toggle control's for property to identify the toggle control with which it is associated.

toggleLink

A Link that toggles the client-side visibility of a group of concealable controls, or the server-side rendered property of a group of non-concealable controls. For more information, see information about toggle controls in webMethods CAF Development Help.

For more information about hiding controls, see information about concealable controls in webMethods CAF Development Help.

Specify the selection options using javax.faces.SelectItem and javax.faces.SelectItems with each value specifying a control ID. Selecting an option whose value does not specify a control ID hides all controls in the group. For more information, see the Option control or the Option Group control.

Children

  • javax.faces.SelectItem, Option control
  • javax.faces.SelectItems, Option Group control
toggleMenu

A single-select dropdown list that toggles among a group of controls. Selection options are defined by specifying javax.faces.SelectItem or javax.faces.SelectItems as children of this control. For more information, see the control documentation for the standard JSF controls Option and Option Group..

You can only use this control in a Form control.

Children

javax.faces.SelectItem (JSF Option control) and javax.faces.SelectItems (JSF Option Group control).

toggleMenus

A Web application top-level navigation control as a list of links. Selecting or hovering over one of the top-level links displays the children of that page as a list of second-level links.

toggleRadio

A radio button group that toggles the client-side visibility of a group of concealable controls, or the server-side rendered property of a group of non-concealable controls. Only the selected control from this group specified by the value property of the Toggle Radio Button Group control is visible. For more information, see information about toggle controls in webMethods CAF Development Help.

For more information about hiding controls, see information about concealable controls in webMethods CAF Development Help.

Specify the selection options using javax.faces.SelectItem and javax.faces.SelectItems with each value specifying a control ID. Selecting an option whose value does not specify a control ID hides all controls in the group. For more information, see the Option control or the Option Group control.

Children

  • javax.faces.SelectItem, Option control
  • javax.faces.SelectItems, Option Group control
toggleTabs

A control with tabs that toggles the client-side visibility of a group of concealable controls, or the server-side rendered property of a group of non-concealable controls. Only the selected control from this group specified by the value property of the Toggle Tabs control is visible. For more information, see information about toggle controls in webMethods CAF Development Help.

For more information about hiding controls, see information about concealable controls in webMethods CAF Development Help.

Specify the selection options using javax.faces.SelectItem and javax.faces.SelectItems with each value specifying a control ID. Selecting an option whose value does not specify a control ID hides all controls in the group. For more information, see the Option control or the Option Group control.

Children

  • javax.faces.SelectItem, Option control
  • javax.faces.SelectItems, Option Group control
tooltip

A panel rendered as tool tip for another control, as specified by the for attribute.

Output generated by Vdldoc View Declaration Language Documentation Generator.