Gotcha when using JavaScript in ADF Regions
Posted
by Frank Nimphius
on Oracle Blogs
See other posts from Oracle Blogs
or by Frank Nimphius
Published on Wed, 28 Mar 2012 12:17:45 -0500
Indexed on
2012/03/28
23:38 UTC
Read the original article
Hit count: 320
/Oracle/JavaScript
You use the ADF Faces af:resource tag to add or reference JavaScript on a page. However, adding the af:resource tag to a page fragment my not produce the desired result if the script is added as shown below
<?xml version='1.0' encoding='UTF-8'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:af="http://xmlns.oracle.com/adf/faces/rich"> <af:resource type="javascript"> function yourMethod(evt){ ... } </af:resource>
Adding scripts to a page fragment like this will see the script added for the first page fragment loaded by an ADF region but not for any subsequent fragment navigated to within the context of task flow navigation. The cause of this problem is caching as the af:resource tag is a JSP element and not a lazy loaded JSF component, which makes it a candidate for caching.
To solve the problem, move the af:resource tag into a container component like af:panelFormLayout so the script is added when the component is instantiated and added to the page.
<?xml version='1.0' encoding='UTF-8'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:af="http://xmlns.oracle.com/adf/faces/rich"> <af:panelFormLayout> <af:resource type="javascript"> function yourMethod(evt){ ... } </af:resource> </af:panelFormLayout>
Magically this then works and prevents browser caching of the script when using page fragments.
© Oracle Blogs or respective owner