By | 19 May 2015

%Page and Component Interface: A Warning

Every once in a while, I stumble on some PeopleCode that looks like this:

If %PAGE = Page.PERS_CHKLST_MGMT2 then
	/* do something really important here */
	/* If this code does not fire there is bad side effects. */
End-if;

The developer intended to limit the scope of the code to trigger only when the current user is viewing a specific page. You generally see this on record level PeopleCode that could end up firing in many places. This is problematic on several fronts. However, the main issue is that:

  • When the component is “wrapped” with a Component Interface the %Page variable resolves to an empty string. Therefore, the “very important” code inside the If will never trigger.

There are a couple alternatives that could have been taken instead.

  • Use the %Component construct instead (less desirable)
  • Add code that should only trigger in a certain component to component level PeopleCode (most desirable)

I ran into this issue trying to wrap a Campus Solutions checklist page in a component interface and call it from a web service. I was left with no choice but to customize the delivered code because the logic inside the if really needed to fire.

Additional Reading

The Only PeopleCode events you should be using

Do you want to become a CI Expert?

If you want to learn more about developing using Component Interface then check out our CI Training Video.