358 Lotus blogs updated hourly. Who will post next? Home | Downloads | Events | Pods | Blogs | Search | myPL | About 
 
Latest 7 Posts
Musing About Web App Structure
Tue, Dec 16th 2014 116
How I Maven-ized My Framework
Mon, Dec 8th 2014 156
Using the ODA Design API for File-Resource Manipulation
Wed, Nov 19th 2014 193
Factories in XPages
Wed, Nov 12th 2014 284
Property Resolution in XPages EL
Tue, Nov 11th 2014 196
Using "Verboten" Property Names in Custom Controls
Sun, Nov 2nd 2014 244
CocoaLove Reflection
Sun, Oct 26th 2014 207
Top 10
A Welcome SSL Stay of Execution
Tue, Oct 21st 2014 406
Domino and SSL: Come with Me If You Want to Live
Wed, Sep 24th 2014 313
Factories in XPages
Wed, Nov 12th 2014 284
Using "Verboten" Property Names in Custom Controls
Sun, Nov 2nd 2014 244
"Build Automatically", "Refresh automatically", and "Team Development"
Thu, Jan 23rd 2014 231
CocoaLove Reflection
Sun, Oct 26th 2014 207
Property Resolution in XPages EL
Tue, Nov 11th 2014 196
Using the ODA Design API for File-Resource Manipulation
Wed, Nov 19th 2014 193
Better Living Through Reverse Proxies
Thu, May 30th 2013 167
Some Notes on Developing with the frostillic.us Framework
Thu, Oct 9th 2014 158


In Between My Project and XPages
Jesse Gallagher    

Despite my grousing about the state of programming for Domino in general and Designer in particular, I'm still mostly a fan of XPages. I use it for my guild's web site and pretty much every new project at work. However, I haven't been able to crack migrating my main work database template over.

Without getting too much into it, the point of the template is to create one database per project to act as a project web site listing online events with arbitrary registration forms and exit evaluations (among other things). Except for custom changes, everything is done via the normal Notes client, not Designer - pages exist as documents with a Body rich text field and associated data and register forms/exit evals, crucially, contain a set of response documents describing their fields. It's important to keep everything as visual as possible, because the users (the people at my company that set up these web sites) are not programmers.

I scrupulously try to avoid modifying the design of the database, so I go out of my way to do custom work via the existing mechanisms as much as possible, and I make pretty good use of rich-text-isms like embedded views, tabbed/computed tables, attachments, buttons, and computed text. In the case of the generated forms, fields can be placed either automatically (with a surrounding template of HTML per-field) or directly into the rich text body via <%FieldName%> placeholders (creating an experience like form design in Designer). Additionally, I have "WebQueryOpen" and "WebQuerySave" fields in the documents for formulas that I pass on into @Eval() in the equivalent places in the actual forms; most of the time, I use these for running agents.

Computed Text

Of the various potential show-stoppers, I think computed text fares the best. For one, it mostly worked - the computed formulas are indeed evaluated and the result is put into place correctly. However, they don't have the same environment you get with the "classic" design elements. The big one that I ran into immediately was @UrlQueryString(...) - it appears that the rich text renderer doesn't inform the rich text about its web environment completely. Prior to 8.5.3, "Display XPage instead" pages didn't know about the real URL, so they couldn't get query parameters at all, but 8.5.3 appears to pass that information along properly. So that means it MIGHT be fixable, if I find a way to properly set fields in the document before the rich text is rendered, so I can set QUERY_STRING - if I can do that, either @UrlQueryString(...) will work or I can manually parse the string as needed.

Embedded Views

They work! ...ish. It looks like icon columns get their URLs a bit messed up, but I can't think of a time when I actually used them, particularly in a situation where I couldn't just write out the URL myself.

Tabbed/Computed Tables

From a cursory glance, I think I'd be SOL when it comes to these. Tabbed tables render flattened out and computed tables don't seem to work.

Attachments

These show up as "(See attached file: foo.jpg)". So... not functional. I might be able to fix it by using a filter on the text to replace the HTML with a link to the document, but I don't know if I could get the attachment image properly. Attachment images aren't amazing, but sometimes they do the job.

Buttons

Nope.

WebQueryOpen/WebQuerySave

In some cases, I could run the formulas through session.evaluate(), though I'm not even sure queryOpenDocument/postOpenDocument let me hook into the right spots (sometimes I set fields on document open). I don't think that would run agents, though, so I'd be stuck trying to parse out the text to look for @Command([ToolsRunMacro]; "...").

User-generated Forms

This is the toughest one. I've given this thought a number of times, and I can't think of a great solution. I can't just re-use the subforms I have already, I don't think I can generate and import an XPage via DXL (though I haven't given that a significant shot), and I can't just do a <xp:repeat/> to create all the fields, since some are in the body area. The main routes I can think of to try are a) arranging the fields on the page after the fact via JavaScript and b) generating the page components on the fly with Java or Server JavaScript. I'll probably give the latter a shot eventually, but I expect it to be a bag of hurt.

 

It's a lot of hurdles! I'd love to switch over to XPages, particularly since, for everything that's more difficult than using classic elements, there are 10 things that are way easier. It'd just be quite an investment of time to merely get up to par with the functionality I already have, if it's even possible in all cases.



---------------------
http://frostillic.us/?p=293
Mar 15, 2012
27 hits



Recent Blog Posts
116


Musing About Web App Structure
Tue, Dec 16th 2014 5:17p   Jesse Gallagher
I've been giving a lot of thought lately to how I feel about different structures for web apps. Specifically, in this case, the "structure" I'm thinking about is the "client-server" balance in the app itself and the associated method of data access. The impetus has been my minor fiddling with Angular over the past half a year or so. If you're not familiar with it, Angular is a client-side JavaScript framework focused on building full-fledged apps that run in the browser. The way it [read] Keywords: xpages application applications desktop development interface java javascript mobile server
156


How I Maven-ized My Framework
Mon, Dec 8th 2014 9:11a   Jesse Gallagher
This past weekend, I decided to take a crack at Maven-izing the frostillic.us Framework (I should really update the README on there). If you're not familiar with it, Maven is a build system for Java projects, basically an alternative to the standard Eclipse way of doing things that we've all gotten pretty used to. Though I'm not in a position to be a strong advocate of it, I know that it has advantages in dependency-resolution and popularity (most Java projects seem to include a "you c [read] Keywords: domino ibm lotus notes xpages community development eclipse integration java openntf profile properties workspace xml
193


Using the ODA Design API for File-Resource Manipulation
Wed, Nov 19th 2014 5:11p   Jesse Gallagher
As is characteristic of his blog, Sven Hasselbach recently posted two interesting posts on using the NAPI classes in the XPages runtime to manipulate files in the WebContent folder. If you haven't read the posts, I suggest you do so now, because it's knowledge that is very good to have. The NAPI classes are chock full of cheating sorcery. But the point of this post here is a bit of me-too-ism. Which is to say: the OpenNTF Domino API has you covered on this front. The API's Design packag [read] Keywords: domino dxl notes xpages database interface java openntf
284


Factories in XPages
Wed, Nov 12th 2014 5:18p   Jesse Gallagher
In my last post, I intimated that I wanted to write a post covering the concept of factories in XPages, or at least the specific kind in question. This is that post. The term "factory" covers a number of meanings, and objects named this way crop up all over the place (ODA has one, for example). The kind I care about today are those defined in an XspContributor object in an XPages plugin. These factories are generally (exclusively, perhaps) used for the purpose of generating adapters: as [read] Keywords: domino ibm notes xpages application development interface java
196


Property Resolution in XPages EL
Tue, Nov 11th 2014 10:19a   Jesse Gallagher
Reading Devin Olson's recent series on EL processing put me in the mood to refresh and fill out my knowledge of how that stuff actually happens. A while back, I made a small foray of my own into explaining how property resolution in XPages EL works, one which I followed up with a mea culpa explaining that I had left out a few additional supported types. As happens frequently, that still didn't cover the full story. Before getting to what I mean by that, I'll step back to an overview of [read] Keywords: domino ibm lotus xpages application development interface java javascript openntf properties xml
244


Using "Verboten" Property Names in Custom Controls
Sun, Nov 2nd 2014 8:11a   Jesse Gallagher
In an attempt to save you from yourself, Designer prevents you from naming your custom control properties after SSJS keywords such as "do" and "for". This is presumably because a construct like compositeData.for would throw both a syntax error in SSJS and the developer into a tizzy. However, sometimes you want to use one of those names - they're not illegal in EL, after all, and even SSJS could still use compositeData['for'] or compositeData.get("for") to access the value. Fortun [read] Keywords: ibm xpages javascript properties xml




207


CocoaLove Reflection
Sun, Oct 26th 2014 5:15p   Jesse Gallagher
This weekend, I attended CocoaLove a new Mac/iOS-development-related conference held in Philadelphia. Though my Cocoa resume consists of doing various tutorials every few years for the last decade or so, the location, concept, and speaker lineup were impossible to resist. The upshot: this was a great conference. As the tagline – "A conference about people, not tech." – indicates, the sessions weren't technical or even generally about programming as such. Instead, it was a bit more i [read] Keywords: domino ibm community development java mac twitter
406


A Welcome SSL Stay of Execution
Tue, Oct 21st 2014 3:11p   Jesse Gallagher
As you likely know from the torrent of posts on Planet Lotus on the topic, IBM announced a hopefully-imminent pair of updates to cover the two main SSL issues that have come to the fore recently: lack of SHA-2 support and the POODLE vulnerability in SSLv3. This is welcome indeed! Personally, I'm going to stick with the nginx approach for HTTP, even in simple setups, because I've found the extra features you can get (and the promising new ones I haven't tried) to be a dramatic [read] Keywords: domino ibm lotus planet lotus security server
158


Some Notes on Developing with the frostillic.us Framework
Thu, Oct 9th 2014 5:12p   Jesse Gallagher
Now that I have a few apps under my belt, I've been getting a better idea of the plusses and minuses of my current development techniques - the frostillic.us Framework combined with stock controls + renderers. This post is basically a mostly-unordered list of my overall thoughts on the current state. Component binding is absolutely the way to go. This pays off in a number of ways, but just knowing that the component is pointed unambiguously at a model property - and thus getting its field [read] Keywords: notes xpages development java network properties xml
144


Building an App with the frostillic.us Framework, Part 7
Tue, Oct 7th 2014 6:12p   Jesse Gallagher
Well, it's been much longer than planned, and this topic isn't actually particularly groundbreaking, but the series returns! Define the data model Create the view and add it to an XPage Create the editing page Add validation and translation to the model Add notification to the model Add sorting to the view Basic servlet REST with Angular.js One of the edge features of the Framework is that it assists in writing DesignerFacesServlet servlets - which are sort of like XAgents but written dir [read] Keywords: ibm xpages java




Created and Maintained by Yancy Lent - About - Blog Submission - Suggestions - Change Log - Blog Widget - Advertising - Mobile Edition