Warning : This article contains undocumented and unsupported information about Custom Page Errors.
Well, if you got this far you are either the Oracle Intelligent Advisor equivalent of Indiana Jones, or you just don’t care. But I do want to reiterate, that what follows is just for investigative purposes.
We all know about Error and Warning Rules in Word, right?

And we all know that assuming there are no mandatory field errors on the Screen (as they are dispatched and displayed before everything else), then you get this sort of thing on the Screen with Page Errors:

And if that’s all you need, nothing to do, right? And of course – I assume you already know and practice the always sensible mantra that the best code you ever write is the code you don’t actually write. So you are aware that these can be styled using the out of the box options for Page Errors, to your heart’s content:

But…but…but I hear you say. Is that it? Where’s the secret stuff? Show me the interesting unsupported things!
Well, it comes in two parts. First and undocumented function:
var theScreen = interview.currentScreen();
// The getPageErrors() of the Screen object returns the page errors and warnings on the Screen
var theErrorsOnTheScreen = theScreen.getPageErrors();
This function returns an array of objects with all the Screen errors and warnings in them. So you could capture that in an update key of an extension to see if something has caused errors to appear on the current Screen. If there are no errors, it returns an empty array:
in my case above, the returned array looks like this:
[{"message":"Screen Error Declared"},{"message":"Screen Error Declared Again"},{"message":"Screen Warning Declared Here"}]
It’s cool to have them in one place. And the second secret undocumented thing is the existence of an extension of type customPageErrors. This is the ideal place to build your own, super-customized Error and Warning display mechanism in mount and then update the display in update.
So now you have complete control over how your messages are displayed. You might want to combine them into one “error area” instead of them being mapped out to individual DIV elements:

A “naked” extension for the custom Page Errors would look something like this:
/**
* Intelligent-Advisor.com December 2022
* Educational Example of Custom Page Errors Extension
* I will remember this is for demonstration purposes only
*/
OraclePolicyAutomation.AddExtension({
customPageErrors: function (interview) {
return {
mount: function (el) {
console.log("Starting name:xMyExtension customPageErrors Mount");
console.log("Ending name:xMyExtension customPageErrors Mount");
},
update: function (el) {
console.log("Starting name:xMyExtension customPageErrors Update");
console.log("Ending name:xMyExtension customPageErrors Update");
},
unmount: function (el) {
console.log("Starting name:xMyExtension customPageErrors UnMount");
console.log("Ending name:xMyExtension customPageErrors UnMount");
}
}
}
})
Once you have your thinking hat on, you can come up with lots of interesting possibilities for custom Page Errors and management thereof. The following example was rendered using izitoast and font awesome for some serious toast magic:

PS: Did you see this article about another hidden extension type?