Copying Custom Controls
Posted: July 17, 2014 Filed under: Uncategorized | Tags: Custom Controls, tips, XPages Leave a commentThis tip is pretty simple, and it might be common knowledge to most people, but I stumbled onto it pretty much by accident.
Copying a custom control from one XPage to another is fairly common, but when you do so and go to build your new page, you get the message:
The prefix “xc” for element “xc:ccTest” is not bound.
Previously, I never really bothered to look into this message any further. I took the easy way out and simply dragged a new copy of the custom control onto the XPage, copied any custom properties (if any), and went on my way. However, this can get annoying REAL fast if you have a lot of custom controls that need to be copied.
Luckily, there is a ridiculously easy way to quickly get rid of the above message.
When you create a new Xpage, the standard markup looks like this:
<?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core"> </xp:view>
Look what happens as soon as you drag a custom control on to your XPage:
<?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom"> <xc:ccTest></xc:ccTest> </xp:view>
Adding the bolded line above to the xp:view tag of your page will allow you to copy custom controls to your XPage without frustration. At the end of the day is it really a big time saver? No. But at least you have a better understanding of the error message.
SSJS variables vs. scope variables
Posted: July 14, 2014 Filed under: Uncategorized | Tags: server side javascript, ssjs, XPages Leave a commentRecently, I ran into a strange issue that had me scratching my head for longer than I’d care to admit. I created a server side javascript object that contained a function, something like this:
var myVar = {
load : function() {
print ("performing some sort of function");
}
}
This ssjs object contained a set of functions that were used in conjunction with one another to perform various functions.
In some cases, these functions needed to grab some data from a viewScope variable, so I figured it made perfect sense to have a key name that was consistent with my ssjs object. I had a button that was setting the value like so:
viewScope.myVar = "foo";
Innocent enough, right?
According to the XPages runtime, apparently not, because I ended up with a message like this:
Error calling method 'load()' on an object of type 'String [JavaScript Object]'
OK, so what happens if we change our scope variable from viewScope to sessionScope?
sessionScope.myVar = "foo";
Same result:
Error calling method 'load()' on an object of type 'String [JavaScript Object]'
My assumption is, this has something to do with the way these objects are serialized. If someone has a better explanation, I’d love to hear it.
In the meantime, don’t give scope variable keys the same name as server side javascript variable.
Bloggity, blog blog blog.
Posted: July 12, 2014 Filed under: Uncategorized Leave a commentThis is it. Numero uno. The first blog post. The one where you sit in front of your keyboard trying to figure out exactly what you are going to say.
I plan on sharing my experience primarily with XPages, hence the name http://xpage.me. However, I reserve the right to branch out from that as I tinker around with other technologies.
Who am I? I have been a Domino developer/consultant for upwards of 16 years and have been fortunate to have some great experiences at some great companies. Currently, I’m a Senior Consultant at PSC Group focusing on (duh) XPages.
Why blog now? Why not? I really wish I had done this sooner – like years sooner. With so many people having contributed so much great information over the years, it’s easy to feel like I’m showing up at the party at 3AM and the keg is already kicked. But I’m finding that is not necessarily the case. Hopefully this platform will help me dig deeper into some things where I might have only scratched the surface previously, and provide some useful information back to the community.
Many thanks to my coworkers Kathy Brown, Brad Balassaitis, and Mark Roden for providing some gentle nudges of encouragement. Also, to David Leedy who is always encouraging people to do SOMETHING productive in the Domino/XPages community, no matter how big or small it may be. In the end, we all benefit.
