XPages Overview Notes from XPages On-line Session

Mindwatering Incorporated

Author: Tripp W Black

Created: 08/21/2009 at 11:57 PM

 

Category:
Notes Developer Tips
XPages

XPages Separates Presentation and Content.
- Should sound very familiar --> form vs document.


A control is targeted to a data source. It's called binding.

Common Control Data Sources:
- Domino Objects (e.g. documents, views, fields, etc.)
- Java & JS objects, arrays, lists, etc.
- JSON objects

A control is a "Dojo" control. You can use "Dojo dijits" that are not on the standard XPages Palette of controls.
- You have the whole Dojo 1.x kit
- You can do TypeAhead, use a really cool Rich Text Editor, and other fuzzier things like a progress bar.
(only two are "on" by default).

To turn the other Dojo controls on:
1. In the All Properties tab of the XPage:
Set the dojoParseOnLoad to true
Set the dojoTheme to true
2. You then can load/use a dojo module by selecting it in the resources field.
3. Then you create a <div> in the Source tab and specify it to be a Dojo dijit.
<div DojoType="dijit.ProgressBar" style="width:400px" id="myProgBar"></div>
This will be more "GUI" in 8.5.1.


The "Simple" controls are typically bound to a DominoDocument field.
The "Container" controls are typically bound to Domino objects like the DominoView
- Includes ViewPanel, Data Table, etc.
- Unlike the Embedded View element, there is no limit on number of data sources on a single XPage.


The syntax for displaying a document is different as an XPage.
http://myserver.mindwatering.local/DatabaseName.nsf/p02.xsp?documentID=11111111111111111111111111113211&action=openDocument
instead of
http://myserver.mindwatering.local/DatabaseName.nsf/ViewAlias/11111111111111111111111111113211?OpenDocument


ViewPanel Column Binding:
When you go to bind a XPage viewPanel control column, you can choose a "real" column in the view bound, or a formula.
The formula can be formula or JavaScript. You reference the JavaScript properties of "this" panel object.

A column can show "text" or "html". This is very useful if you are presenting native MIME and want say an HTML e-mail body to display.


Ajax is built-in.
- For controls like the "pager", you can choose to refresh the whole page or just the target control.
-- additionally, you can refresh just computed fields or a single table cell, too. (see Server Options section for the control's actions.)
- There is a control called typeAhead.


Programming Support.
- Includes JavaScript (client and server), Java, and @Formula.
- Can call Java from JS.
- Use _dump() for debugging or print() for status messages.
-- e.g. _dump(@DbName) or print(@DbName)
- Use languages within other languages.

Example of getting the database name:
alert ("#{javascript: @DbName() }");'
var db:NotesDatabase = null;
...
db.compact()


previous page