Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Requires Platform 4.2+; Requires Data Framework Plug-in top

A data source is an object capable of supplying objects and data sets based on query strings.

...

AttributeDescriptionRequired/Optional
sourceA path to the location of the data.  Use any of the following formats:
  • Absolute HTTP URL (static page or dynamic page that writes out a document to the output stream).
    For example, http://localhost:9090/myPage
  • Relative HTTP URL (static page or dynamic page that writes out a document to the output stream).
    For example, ../../mypage, relative to where this page was loaded.
  • Container path, document://myDoc, where myDoc is the name of an existing registered document.
  • Container path with method call.
    For example, mco://myMco.getMyDocument(). The method must return a com.nexaweb.xml.Document object wrapped by the datasource. If myMco is null or the result of the method chain is null, Nexaweb throws a DataAccessException.

The default is null.  Note:  If you do not specify a source, Nexaweb expects the source to be set programmatically later on.

Optional
idUniquely identifies the data source using a system wide unique value.Required
documentNameRegisters the source document retrieved from the source in the DocumentRegistry.
This attribute essentially translates into a loadDocumentFromUrl(sourceUrl, documentName) call.
If the documentDataSource tag does not specify a source, the documentName attribute has no effect.
To set the source and register the document in the DocumentRegistry programmatically, use one of the following API methods:
  • setSource(Document doc, String documentName)
  • loadDocumentFromUrl(String sourceUrl, String documentName) 
    If a document with the same name is already registered under the documentName name, these methods unregister it.
Optional
refreshOnAttributeChangeSpecifies whether to refresh the datasource when attribute change events fire on any element in the source document. 
Values: true | false
Default: true
Optional
refreshOnStructureChangeSpecifies whether to refresh the datasource when structure change events fire on any element in the source document. 
Values: true | false
Default: true
Optional

...

AttributeDescriptionRequired/Optional
sourceSpecifies the path to the object to wrap. Specify path using one of the following formats:
  • Absolute HTTP URL. Path to a page that writes out a serialized object to the output stream.  The object's class must be on the client's classpath. For example, http://host/myapp/getObject.jsp.
  • Relative HTTP URL. For example: /getObject.jsp (relative to the root context) or getObject.jsp (relative to the page that loaded the datasource). 
  • Container path.  For example: mco://myMco. (If myMco does not exist, Nexaweb throws DataAccessException.)
  • Container path with a method call. For example: mco://myMco.getFoo().getBar().  The method chain must return an object and the datasource wraps that object. If myMco is null or the result of the method chain is null, Nexaweb throws a DataAccessException.
Optional
idUniquely identifies the data source using a system wide unique value.Required
refreshOnPropertyChangeSpecifies whether to refresh the datasource when property change events fire on the source object.  To enable datasource refresh, you must:
  • Set this attribute to true
  • Include in the source object the following public methods for adding\removing PropertyChangeListener instances:
    • public void addPropertyChangeListener(PropertyChangeListener)
    • public void removePropertyChangeListener(PropertyChangeListener)

Values: true | false
Default: true

Optional

...

ExpressionDescription
"barReturns the value of the bar variable.
"bar=10"Sets the variable to 10.
"myVector.addElement(new Integer( bar ))"Adds an integer value of bar to the myVector.
"myVector.{delegate()}"Calls delegate() method on each element contained in myVector and returns a new list that contains the return values of those calls.
"myVector.size().(#this > 100? 2*#this : 20+#this)" the size of the Vector gets bound to #this variable (#this always refers to the current value of an OGNL expression), then the expression that follows gets evaluated returning one of the outcomes.

...

Creating a Data Source

As part of the data binding framework, Nexaweb provides you with the ability to implement your own custom data sources.  For example, you can implement your own functionality to load data from a database or to provide access to a custom set of objects.  In order to implement the functionality of a data source, you must implement the required interface (com.nexaweb.plugin.data.datasource.DataSource) as defined in the API section.

...