|Professional Services||Second Signal||Presentations||Andrew's Blog||Support|
UPDATE: This is actually something already fixed. Paul Withers pointed me to this fix: I just had to check this box on the button event.
Now I'm off to eat some crow....
You have got to be kidding me. It turns out that if you have multiple data sources (documents) on different parts of your XPage, although you can individually toggle them into and out of edit mode, save them or discard them individually, and generally act on them as you'd expect; if you attempt to use the built in XPages validation functionality (which would be quite nice if it worked) --
you can't realistically separate it so only the validation events related to the document you're acting on get fired off.
That is to say, if you have DOC1 and DOC2 both in edit mode and you attempt to save DOC1 -- all of DOC2's validation code fires as well. If you're not done editing DOC2, it doesn't matter. You get validation failures and your DOC1 change doesn't complete. I detailed the specifics of the problem I'm having over here on Stack Overflow if anyone wants to show me I'm wrong. (thanks Paul Withers for doing just that)
I've seen several attempts to work around this -- some come pretty close. Particularly Tommy Valand's work -- though that falls down once one of the fields does invalidate for a valid reason, and the whole page has to be reloaded to set things right. I've also figured out a pretty complex way to make it work by using the events that fire both server and client side on each button to change the validation requirements of the various fields elsewhere in the XPage. These are hacks, and generally they require so much work you may as well just write your own damn client and server side validation code and ignore what IBM has done in XPages.
In searching, I've seen plenty of comments from XPages supporters saying "IBM is very much aware of this problem and is working on a solution" -- as Yoda might say "Fucking break you must give me!". We're several years and several revisions into a product that was already on the market (though truly not actually being sold to many people) at the time they bought it. This kind of amateur hour crap should have been dealt with years ago. And it was dealt with already.
Please wait while your document is saved.