Partial Page Rendering in OAF Page
- by PRajkumar
Let us try to implement partial page rendering for a text item.
If value of TextItem1 is null then TextItem2 will not be appreared on UI.
If value of TextItem1 is not null then TextItem2 will be appreared on UI.
1. Create a New OA Workspace and Empty OA Project
File> New > General> Workspace Configured for Oracle Applications
File Name -- PPRProj
Project Name – PPRDemoProj
Default Package -- prajkumar.oracle.apps.fnd.pprdemo
2. Create Application Module AM
PPRDemoProj right click > New > ADF Business Components > Application Module
Name -- PPRAM
Package -- prajkumar.oracle.apps.fnd.pprdemo.server
Check Application Module Class: PPRAMImpl Generate JavaFile(s)
3. Create a PPRVO View Object
PPRDemoProj> New > ADF Business Components > View Objects
Name – PPRVO
Package – prajkumar.oracle.apps.fnd.pprdemo.server
In Attribute Page
Click on New button and create transient primary key attribute with the following properties:
Attribute
Property
Name
RowKey
Type
Number
Updateable
Always
Key Attribute
(Checked)
Click New button again and create transient attribute with the following properties:
Attribute
Property
Name
TextItem2Render
Type
Boolean
Updateable
Always
Note – No Need to generate any JAVA files for PPRVO
4. Add Your View Object to Root UI Application Module
Right click on PPRAM > Edit PPRAM > Data Model >
Select PPRVO in Available View Objects list and shuttle to Data Model list
5. Create a OA components Page
PPRDemoProj right click > New > OA Components > Page
Name – PPRPG
Package -- prajkumar.oracle.apps.fnd.pprdemo.webui
6. Modify the Page Layout (Top-level) Region
Attribute
Property
ID
PageLayoutRN
Region Style
pageLayout
Form Property
True
Auto Footer
True
Window Title
PPR Demo Window Title True
Title
PPR Demo Page Header
AM Definition
prajkumar.oracle.apps.fnd.pprdemo.server.PPRAM
7. Create the Second Region (Main Content Region)
Right click on PageLayoutRN > New > Region
Attribute
Property
ID
MainRN
Region Style
messageComponentLayout
8. Create Two Text Items
Create First messageTextItem --
Right click on MainRN > New > messageTextInput
Attribute
Property
ID
TextItem1
Region Style
messageTextInput
Prompt
Text Item1
Length
20
Disable Server Side Validation
True
Disable Client Side Validation
True
Action Type
firePartialAction
Event
TextItem1Change
Submit
True
Note -- Disable Client Side Validation and Event property appears after you set the Action Type property to firePartialAction
Create Second messageTextItem --
Select MainRN right click > New > messageTextInput
Attribute
Property
ID
TextItem2
Region Style
messageTextInput
Prompt
Text Item2
Length
20
Rendered
${oa.PPRVO1.TextItem2Render}
9. Add Following code in PPRAMImpl.java
import oracle.apps.fnd.framework.OARow;
import oracle.apps.fnd.framework.OAViewObject;
import oracle.apps.fnd.framework.server.OAApplicationModuleImpl;
import oracle.apps.fnd.framework.server.OAViewObjectImpl;
public void handlePPRAction()
{
Number val = 1;
OAViewObject vo = (OAViewObject)findViewObject("PPRVO1");
if (vo != null)
{
if (vo.getFetchedRowCount() == 0)
{
vo.setMaxFetchSize(0);
vo.executeQuery();
vo.insertRow(vo.createRow());
OARow row = (OARow)vo.first();
row.setAttribute("RowKey", val);
row.setAttribute("TextItem2Render", Boolean.FALSE);
}
}
}
10. Implement Controller for Page
Select PageLayoutRN in Structure pane right click > Set New Controller
Package Name -- prajkumar.oracle.apps.fnd.pprdemo.webui
Class Name – PPRCO
Write following code in processFormRequest function of PPRCO Controller
import oracle.apps.fnd.framework.OARow;
import oracle.apps.fnd.framework.OAViewObject;
public void processRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processRequest(pageContext, webBean);
PPRAMImpl am = (PPRAMImpl)pageContext.getApplicationModule(webBean);
am.invokeMethod("handlePPRAction");
}
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processFormRequest(pageContext, webBean);
PPRAMImpl am = (PPRAMImpl)pageContext.getApplicationModule(webBean);
OAViewObject vo = (OAViewObject)am.findViewObject("PPRVO1");
OARow row = (OARow)vo.getCurrentRow();
if ("TextItem1Change".equals(pageContext.getParameter(EVENT_PARAM)))
{
if (pageContext.getParameter("TextItem1").equals(""))
{
row.setAttribute("TextItem2Render", Boolean.FALSE);
}
else
{
row.setAttribute("TextItem2Render", Boolean.TRUE);
}
}
}
11. Congratulation you have successfully finished. Run Your PPRPG page and Test Your Work