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
 
  |