By Chris Malek | 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
%Pagevariable resolves to an empty string. Therefore, the “very important” code inside the
Ifwill never trigger.
There are a couple alternatives that could have been taken instead.
- Use the
%Componentconstruct 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.