Always Learning

Advanced Search

XPages Extension Library

XPages Extension Library

A Step-by-Step Guide to the Next Generation of XPages Components

Paul Hannan, Declan Sciolla-Lynch, Jeremy Hodge, Paul Withers, Tim Tripcony

May 2012, Paperback, 576 pages
ISBN13: 9780132901819
ISBN10: 0132901811
Special online offer - Save 30%
Was £43.99, Now £30.79Save: £13.20
  • Print pagePrint page
  • Email this pageEmail page
  • Share

The XPages Extension Library’s next-generation XPages controls make application development far more efficient, effective, scalable, and rewarding. With IBM® Lotus® Notes®/Domino® 8.5.3 and Upgrade Pack 1, IBM has incorporated powerful new capabilities and support. These components and technologies are now fully ready for even the toughest production challenges.

XPages Extension Library is the first and only complete guide to Domino development with this library; it’s the best manifestation yet of the underlying XPages Extensibility Framework. Complementing the popular Mastering XPages, it gives XPages developers complete information for taking full advantage of the new components from IBM.

Combining reference material and practical use cases, the authors offer step-by- step guidance for installing and configuring the XPages Extension Library and using its state-of-the-art applications infrastructure to quickly create rich web applications with outstanding user experiences. Next, the authors provide detailed step-by-step guidance for leveraging the library’s powerful new support for REST services, mobile and social development, and relational data. The book concludes by showing how to include Java™ code in Domino XPages applications—a great way to make them even more powerful.

Coverage includes

  • Automating deployment of XPages Extension Library throughout your IBM Lotus Notes/Domino or IBM XWork environment
  • Integrating modern design patterns and best practices into Lotus Domino applications with drag-and-drop ease
  • Incorporating AJAX capabilities with Switch, In Place Form, and other dynamic content controls
  • Extending applications with Dojo widgets, popups, Tooltips, Dialogs, and Pickers
  • Implementing state-of-the-art navigation and outlines
  • Using Layout and Dynamic Views controls to painlessly modernize most Domino applications to XPages
  • Quickly building mobile interfaces for existing applications
  • Using social enablers to connect with social platforms and incorporate social features
  • Integrating SQL datasources into XPages data-driven applications

Foreword xv

Preface xix

Acknowledgments xxv

About the Authors xxvii

Contributing Authors xxix

Part I: The Extension Library, Installation, Deployment, and an Application Tour

Chapter 1 The Next Generation of XPages Controls 3

So How Did We Get Here? 4

Then Came Domino R.8.5.2, and the Extensibility Door Opened 4

OpenNTF and the Controls Too Good Not to Release 5

To Extensibility and Beyond 5

What Makes an XPages Control Next Generation? 5

What Is the XPages Extension Library? 6

Making Domino Application Development Easier, Faster, and Better 8

What Are the Most Important Controls and Why? 8

XPages Learning Shortcuts 9

Bells and Whistles: Welcome to the Future 10

Get Social 10

Upwardly Mobile 11

Relational Data 11

RESTful Web Services 12

Doing It Yourself with Java 12

Conclusion 12

Chapter 2 Installation and Deployment of the XPages Extension Library 13

Downloading the ExtLib 13

Installing the ExtLib via the Upgrade Pack 17

Deploying ExtLib to Developers in Designer 18

Uninstalling the Extension Library from Designer 27

Server Deployment 28

Automatic Server Deployment in Domino 8.5.3 28

Automatic Server Deployment in Domino 8.5.2 34

Manually Deploying Libraries to a Server 38

Deploying the Extension Library to End Users 40

Widget Catalog Setup 41

Creating a Widget Configuration 42

Provisioning the Extension Library Widget to Other Users 50

Conclusion 52

Chapter 3 TeamRoom Template Tour 53

Where to Get the TeamRoom Template and How to Get Started 54

The TeamRoom Template and Why It Was a Good Candidate for Modernization 55

TeamRoom Redesign Brief and Features 56

Application Layout 56

Recent Activities: The Home Page 59

All Documents 60

The Document Form 61

Calendar 63

Members 64

Mobile 66

Lessons Learned and Best Practices 67

Conclusion 68

Part II : The Basics: The Application’s Infrastructure

Chapter 4 Forms, Dynamic Content, and More! 71

Form Layout Components 71

Form Table (xe:formTable, xe:formRow, xe:formColumn) 71

Forum Post (xe:forumPost) 78

Dynamic Content 80

In Place Form Control (xe:inPlaceForm) 80

Dynamic Content (xe:dynamicContent) 83

Switch (xe:switchFacet) 88

Miscellaneous Controls 89

Multi-Image (xe:multiImage) 89

List Container (xe:list) 91

Keep Session Alive (xe:keepSessionAlive) 92

Conclusion 93

Chapter 5 Dojo Made Easy 95

What Is Dojo? 95

Default Dojo Libraries Using Dojo Modules in XPages 96

Simple Dojo Example: dijit.form.ValidationTextBox 99

Dojo Example for Slider 100

Dojo Themes 102

Dojo Modules and Dojo in the Extension Library 103

Benefits and Differences of Dojo Extension Library Components 104

Dojo Extensions to the Edit Box Control 104

Dojo Text Box (xe:djTextBox) 104

Dojo Validation Text Box (xe:djValidationTextBox) 106

Dojo Number Text Box, Dojo Currency Text Box (xe:djNumberTextBox and xe:djCurrencyTextBox) 113

Dojo Number Spinner (xe:djNumberSpinner) 115

Dojo Date Text Box and Dojo Time Text Box (xe:djDateTextBox and xe:djTimeTextBox) 116

Dojo Extensions to the Multiline Edit Box Control 119

Dojo Extensions to the Select Control 120

Dojo Combo Box and Dojo Filtering Select (xe:djComboBox and xe:djFilteringSelect) 120

Dojo Check Box and Dojo Radio Button 126

Dojo Extensions to Buttons 126

Dojo Toggle Button Control 128

Composite Dojo Extensions 130

Sliders 131

Dojo Link Select (xe:djLinkSelect) 135

Dojo Image Select 137

Dojo Effects Simple Actions 140

Dojo Fade and Wipe Effects 140

Dojo Slide To Effect 142

Dojo Animation 143

Conclusion 147

Chapter 6 Pop-Ups: Tooltips, Dialogs, and Pickers 149

Tooltip (xe:tooltip) 149

Dialogs 153

Dialog (xe:dialog) 153

Tooltip Dialog (xe:tooltipDialog) 160

Value Picker (xe:valuePicker) 162

Dojo Name Text Box and Dojo List Text Box (xe:djextNameTextBox and xe:djextListTextBox) 164

Name Picker (xe:namePicker) 165

Validating a Picker 167

Conclusion 170

Chapter 7 Views 171

Dynamic View Panel (xe:dynamicViewPanel) 171

Data Grid 175

REST Service 176

Dojo Data Grid Control (xe:djxDataGrid) 179

Dojo Data Grid Contents 182

InViewEditing 184

View Events 186

iNotes ListView (xe:listView) 187

Dynamic ListView 188

ListView Column 192

iNotes Calendar (xe:calendarView) 194

Calendar Views in the Notes Client 194

REST Service: calendarJsonLegacyService 196

REST Service: Notes Calendar Store 197

Notes Calendar Control 200

View Events 203

Data View (xe:dataView) 206

Pagers 207

PagerSaveState (xe:pagerSaveState) /View State Beans 212

Columns 214

Multiple Columns 219

Forum View 220

Conclusion 221

Chapter 8 Outlines and Navigation 223

The Dojo Layout Controls 223

The Content Pane 223

The Border Container and Border Pane 225

Accordion Container and Accordion Pane 229

The Tab Container and the Tab Pane 231

The Stack Container and the Stack Pane 238

Understanding the Tree Node Concept 239

Standard Node Types 239

The Advanced Node Types 242

Using the Navigator Controls 247

The Navigator Control 247

The Bread Crumbs Control (xe:breadCrumbs) 249

The List of Links Control (xe:linkList) 250

The Sort Links Control (xe:sortLinks) 251

The Link Container Controls 251

The Pop-up Menu Control (xe:popupMenu) 252

The Toolbar Control (xe:toolbar) 254

The Outline Control (xe:outline) 255

The Accordion Control (xe:accordion) 256

The Tag Cloud Control (xe:tagCloud) 257

The Widget Container Control (xe:widgetContainer) 260

Conclusion 261

Chapter 9 The Application’s Layout 263

History of OneUI 263

Easy OneUI Development with the Application Layout Control 264

Legal 267

Navigation Path 268

The Footer 269

The Placebar 270

Search Bar 271

The Banner 272

The Title Bar 273

Product Logo 273

Mast Header and Footer 273

The Layout Control Tooling in Designer 274

Using the Application Layout Within a Custom Control 276

Conclusion 280

Part III: Bell and Whistles: Mobile, REST, RDBMS, and Social Chapter 10 XPages Goes Mobile 283

In the Beginning 283

The XPages Mobile Controls the Extension Library 284

The Basics of the XPages Mobile Controls 284

The Single Page Application Control<xe:singlePageApp> 286

The Mobile Page Control<xe:appPage> 288

The Page Heading Control<xe:djxmHeading> 288

Rounded List (xe:djxmRoundRectList) 289

Static Line Item (xe:djxmLineItem) 291

Mobile Switch (xe:djxmSwitch) 292

Tab Bar (xe:tabBar) 295

Tab Bar Button (xe:tabBarButton) 298

The XPages Mobile Theme 298

Hello Mobile World Tutorial 300

1. Enable the App for the Extension Library and Mobile 300

2. Create a New XPage and Mobile Application 301

3. Add a View Document Collection to the Mobile Page 302

4. Display More Rows 304

5. Opening a Document from the Data View 306

6. Editing and Saving Document Changes 311

Deep Dive into the Controls in the Extension Library, with Examples of Their Use 315

Outline Control 315

Hash Tags 318

Form Table Control (xe:formTable) 318

Dynamic Content Control 320

Data View Control 321

More Link 322

Filter Data 323

Multiple Controls 324

Move to Mobile Page Action 325

Heading (xe:djxmheading) 325

Large Content 326

Using Dojo to Modify Controls 327

XPages Mobile Phone Application Gotchas 327

The Differences Between Web App and Mobile App Layout 327

What Stays the Same? 330

What Has Changed? 330

Conclusion 333

Chapter 11 REST Services 335

REST Services in the XPages Extension Library 336

XPages REST Service Control (xe:restService) 338

Standard Attributes for REST Service Control 338

Standard Attributes for Each Service Type 340

Hello REST World 1: Using the pathInfo Property 340

Example of an XPage that Uses the REST Service Control 340

Hello REST World 2: Computed Column to Join Data 341

Example of a REST Service Control with a Computed Column 341

Hello REST World 3: REST Service in a Data Grid 342

Example of Binding a Grid to a REST Service Control 342

Domino REST Service from XPages Samples 343

Data Service 344

Data Services—Contacts and All Types 345

Dojo Grid Using JSON Rest Data Services 345

Dojo NotesPeek 347

Consuming Service Data with Other Controls 348

iNotes List View 348

iNotes Calendar 349

Calling a Remote Service from Domino 351

JSON-RPC Service 351

Consuming Service Data from External Applications 353

OpenSocial Gadgets 353

Accessing Data Services from Domino as a Built-In Service 356

Enabling the Service on the Domino Server 357

Domino Data Services 360

Database JSON Collection Service 360

View JSON Collection Service 361

View JSON Service 362

View Design JSON Service 366

Document Collection JSON Service 367

Document JSON Service 368

Developing Custom REST Services 375

Conclusion 375

Chapter 12 XPages Gets Relational 377

Accessing Relational Data Through JDBC 377

Installing a JDBC Driver 379

Creating a Connection to the RDBMS 406

Using Relational Datasources on an XPage 410

Working with the xe:jdbcQuery Datasource 413

Working with the xe:jdbcRowSet Datasource 414

Properties Common to Both the xe:jdbcQuery and xe:jdbcRowSet Datasources 415

JDBC Datasources and Concurrency 415

Server-Side JavaScript JDBC API for XPages and Debugging 417

Java JDBC API for XPages 425

Conclusion 428

Chapter 13 Get Social 429

Going Social 429

Get Started 430

Setup 431

OAuth 431

OAuth Dance 431

OAuth Token Store Template 434

Configure Applications to Use OAuth 439

REST API Calls and Endpoints 439

Endpoint Configuration 440

Access Endpoints 446

REST API Calls 447

Utilities for Parsing 449

REST Datasources 450

The Connections Datasource (xe:connectionsData) 452

File Service Data (xe:fileServiceData) Datasource 452

Activity Stream Data (xe:activityStreamData) 454

Proxies 455

Domino Proxy 455

ExtLib Proxies 457

User Profiles and Identities 457

User and People Beans 458

Extensions to User and People Beans 459

Enablement of Extensions 462

Caching of User Information 464

User Identities 465

User Interface Controls 467

Files Controls for Dropbox, LotusLive, and Connections 467

Sametime Controls 471

Connections Controls 474

Facebook Controls 478

IBM Social Business Toolkit 482

Conclusion 485

Part IV: Getting Under the Covers with Java

Chapter 14 Java Development in XPages 489

Benefits of Java Development 489

Referencing Native Java in Server-Side JavaScript 490

Using Java That Others Have Written 491

Setting Up Domino Designer to Create Java Classes 499

Introduction to Java Beans 506

Managed Beans 508

The User and People Bean 509

Conclusion 512

Appendix A Resources 513

Other Resources 514

Index 515

This book has many authors, all from the XPages community.

Paul Hannan is a senior software engineer in the IBM Ireland software lab in Dublin and a member of the XPages runtime team. He has worked on XPages since it was known as XFaces in Lotus Component Designer. Previous to this, he worked on JSF tooling for Rational® Application Developer, and before that on Notes Domino 6 back to Notes 3.3x and Lotus ScreenCam. A native of County Sligo, Paul now lives in Dublin with his wife Katie and son Alec. A recent con- vert (dragged kicking and screaming) to opera (not the web browser), Paul also enjoys thinking about stuff, taking pictures, commanding the remote control, and playing with his son and his Lego.

Declan Sciolla-Lynch was born in Dublin, Ireland and now lives in Pittsburgh, Pennsylva- nia. Declan has been working with IBM Lotus Notes/Domino for more than 15 years. He wrote one of the first XPages learning resources on his blog and is widely considered one of the com- munity’s XPages gurus. Declan has spoken at Lotusphere on a number of occasions and has con- tributed popular projects to OpenNTF, the community’s open source hub. He is also an IBM Champion. He and his wife have three dogs and three cats and go to Disney theme parks when- ever they get a chance.

Jeremy Hodge, from southern Michigan, is a software architect with ZetaOne Solutions Group and has more than 15 years’ experience in the software design industry. He has designed and implemented applications in the vertical market application, custom application, Software as a Service (SaaS), and off-the-shelf product spaces in many platforms and languages, including IBM Lotus Notes/Domino, C/C++/Objective-C, Java, Object Pascal, and others. He has served as the subject matter expert for courses with IBM Lotus Education, including those on XPages applications. He blogs on XPages at and his personal blog at

Paul Withers is senior Domino developer and team leader at Intec Systems Ltd, an IBM Premier Business partner in the UK. He is an IBM Champion for collaboration solutions and the cohost of The XCast XPages podcast. Paul has presented at Lotusphere and various Lotus User Groups across Europe. He has written blogs, wiki articles, and a NotesIn9 episode. He has authored reusable XPages controls and an application, XPages Help Application, on OpenNTF. Outside of work, Paul is a Reading FC supporter and netball umpire in the England Netball National Premier League.

Tim Tripcony leads the Transformer ExtLib development team at GBS, creating XPage components and other JSF artifacts that extend the native capabilities of the Domino platform. He maintains a popular technical blog, Tip of the Iceberg (, offering tips on cutting-edge Domino development techniques. He frequently speaks at user group meetings and technical conferences, including Lotusphere. Tim is a globally recognized expert on advanced XPage and JSF development and has been designated an IBM Champion.