Creating a Dynamic
table region and attaching the VO to this dynamic Table region in
ProcessFormRequest method of controller.
table region and attaching the VO to this dynamic Table region in
ProcessFormRequest method of controller.
Consider the
requirement,
requirement,
- If user selects “U” then it should create table region
and should attach the query “select
user_name from fnd_user “ - If user selects “I” then it should create table region
and should attach the query “select
invoice_num from ap_invoices_all “
Enter “I” and click Submit button.
The result will be Invoice Information.
Enter the “U” and click Submit button.
Result will be User information.
Note:
We cannot directly modify web bean properties in ProcessFormRequest method in
controller. If you try, you will get below error.
controller. If you try, you will get below error.
(This
developer mode error is thrown instead of being registered due to the lack of
the page context object.) The OA passivation framework coding standard has been
violated. Web bean properties cannot be modified in the controller
processFormData or processFormRequest method. Web bean properties should be
modified in the processRequest method only. An attempt to modify a web bean has
been made in the following call stack: java.lang.Throwable at
oracle.apps.fnd.framework.OACommonUtils.getCallStack(Unknown Source) at
oracle.apps.fnd.framework.webui.OAWebBeanHelper.addIndexedChild(Unknown Source)
at oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean.addIndexedChild(Unknown
Source) at
xxtab.oracle.apps.po.dynamictab.webui.xxtabCO.processFormRequest(xxtabCO.java:106)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequest(Unknown
Source) at
oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processFormRequest(Unknown
Source) at
oracle.apps.fnd.framework.webui.OAPageLayoutHelper.processFormRequest(Unknown
Source) at oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean.processFormRequest
(Unknown Source) at
oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(Unknown
Source) at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequest
developer mode error is thrown instead of being registered due to the lack of
the page context object.) The OA passivation framework coding standard has been
violated. Web bean properties cannot be modified in the controller
processFormData or processFormRequest method. Web bean properties should be
modified in the processRequest method only. An attempt to modify a web bean has
been made in the following call stack: java.lang.Throwable at
oracle.apps.fnd.framework.OACommonUtils.getCallStack(Unknown Source) at
oracle.apps.fnd.framework.webui.OAWebBeanHelper.addIndexedChild(Unknown Source)
at oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean.addIndexedChild(Unknown
Source) at
xxtab.oracle.apps.po.dynamictab.webui.xxtabCO.processFormRequest(xxtabCO.java:106)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequest(Unknown
Source) at
oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processFormRequest(Unknown
Source) at
oracle.apps.fnd.framework.webui.OAPageLayoutHelper.processFormRequest(Unknown
Source) at oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean.processFormRequest
(Unknown Source) at
oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(Unknown
Source) at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequest
Solution:
Please check below
things if this is helpful.
things if this is helpful.
Step 1: Write the code for creating the table region dynamically in ProcessRequest
method in controller. Initially set a Flag as ‘No’.
method in controller. Initially set a Flag as ‘No’.
Step 2: On clicking the Submit button , set the flag to ‘Yes’ and get the parameter value from Input Textbox in ProcessFormRequest method in controller
Step 3: Using forwardImmediatelyToCurrentPage method load the same page once again
Step 4: Based on the flag and parameter value, proceed to the dynamic table region
and attach VO query logic in ProcessRequest method in controller.
and attach VO query logic in ProcessRequest method in controller.
Code Snippet – ProcessRequest
and ProcessFormRequest method
and ProcessFormRequest method
public void processRequest(OAPageContext pageContext, OAWebBean
webBean)
webBean)
{
super.processRequest(pageContext, webBean);
String xflag =
“N”;
“N”;
String aparam =
“”;
“”;
String voquery =
“”;
“”;
if
(pageContext.getTransactionValue(“xflag”) != null &&
!pageContext.getTransactionValue(“xflag”).equals(“”))
(pageContext.getTransactionValue(“xflag”) != null &&
!pageContext.getTransactionValue(“xflag”).equals(“”))
xflag =
pageContext.getTransactionValue(“xflag”).toString();
pageContext.getTransactionValue(“xflag”).toString();
System.out.println(“Flag=”+ xflag);
if ( xflag ==
“Y” )
“Y” )
{
if
(pageContext.getTransactionValue(“param”) != null &&
!pageContext.getTransactionValue(“param”).equals(“”))
(pageContext.getTransactionValue(“param”) != null &&
!pageContext.getTransactionValue(“param”).equals(“”))
aparam =
pageContext.getTransactionValue(“param”).toString();
pageContext.getTransactionValue(“param”).toString();
System.out.println(“aparam=”+ aparam);
if (aparam ==
“U” || aparam.equals(“U”))
“U” || aparam.equals(“U”))
{
voquery =
“select user_name from fnd_user “;
“select user_name from fnd_user “;
}
else if (aparam ==
“I” || aparam.equals(“I”))
“I” || aparam.equals(“I”))
{
voquery =
“select invoice_num from ap_invoices_all “;
“select invoice_num from ap_invoices_all “;
}
else
{
voquery =
“select user_name from fnd_user “;
“select user_name from fnd_user “;
}
System.out.println(“voquery=”+
voquery);
voquery);
AttributeDef[]
attrdef = null;
OAApplicationModule oam =
pageContext.getApplicationModule(webBean);
ViewObject vo =
oam.findViewObject(“xxVO”);
oam.findViewObject(“xxVO”);
if(vo !=
null)
null)
{
vo.remove();
vo =
oam.createViewObjectFromQueryStmt(“xxVO”,voquery);
oam.createViewObjectFromQueryStmt(“xxVO”,voquery);
}
else
{
vo =
oam.createViewObjectFromQueryStmt(“xxVO”,voquery);
oam.createViewObjectFromQueryStmt(“xxVO”,voquery);
}
vo.executeQuery();
attrdef
= vo.getAttributeDefs();
= vo.getAttributeDefs();
String colprompt =
attrdef[0].getName();
attrdef[0].getName();
System.out.println(“colprompt”+colprompt);
OATableBean
tabbean =
(OATableBean)createWebBean(pageContext,TABLE_BEAN,null,”table”);
tabbean =
(OATableBean)createWebBean(pageContext,TABLE_BEAN,null,”table”);
tabbean.setID(“TableBN”);
tabbean.setNumberOfRowsDisplayed(10);
tabbean.setWidth(“50%”);
tabbean.setUserCustomizable(true);
tabbean.setViewUsageName(“xxVO”);
OAMessageStyledTextBean
beans =
(OAMessageStyledTextBean)createWebBean(pageContext,MESSAGE_STYLED_TEXT_BEAN,null,”beans”);
beans =
(OAMessageStyledTextBean)createWebBean(pageContext,MESSAGE_STYLED_TEXT_BEAN,null,”beans”);
beans.setID(“col”+colprompt+”0”);
beans.setViewUsageName(“xxVO”);
beans.setViewAttributeName(colprompt);
beans.setLabel(colprompt);
beans.setUserCustomizable(true);
beans.setWrapEnabled(true);
beans.setDataType(“VARCHAR2”);
tabbean.addIndexedChild(beans);
webBean.addIndexedChild(tabbean);
}
}
/**
* Procedure to handle
form submissions for form elements in
form submissions for form elements in
* a region.
* @param pageContext
the current OA page context
the current OA page context
* @param webBean the
web bean corresponding to the region
web bean corresponding to the region
*/
public void
processFormRequest(OAPageContext pageContext, OAWebBean webBean)
processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processFormRequest(pageContext, webBean);
if(pageContext.getParameter(“item2”)!= null) // Go button
{
String param =
pageContext.getParameter(“item1”);//To get text box value
pageContext.getParameter(“item1”);//To get text box value
pageContext.putTransactionValue(“xflag”,”Y”);
pageContext.putTransactionValue(“param”,param);
pageContext.forwardImmediatelyToCurrentPage(null,true, “Y”);
}
}
Recommended Posts