Get the VO from the AM
OAViewObject objAssessmentVO = (OAViewObject)yourAM.findViewObject("yourVO");- MtlLotNumbersVOImpl vo= (MtlLotNumbersVOImpl)findViewObject("MtlLotNumbersVO1");
- MtlLotNumbersVORowImpl voi=(MtlLotNumbersVORowImpl)(vo.getCurrentRow());
- mLotDetailValuesHT.put("StatusId",voi.getStatusId());
MtlLotNumbersVOImpl vo= (MtlLotNumbersVOImpl)findViewObject("MtlLotNumbersVO1"); MtlLotNumbersVORowImpl voi=(MtlLotNumbersVORowImpl)(vo.getCurrentRow()); mLotDetailValuesHT.put("StatusId",voi.getStatusId());
First get the AM where your VO is attached, then get the VO from that AM.Get the RootAM and get all the VOs under that AM, using
- writeLog(pageContext, "Room AM"+ pageContext.getRootApplicationModule());
- String[] rootViewNames = pageContext.getRootApplicationModule().getViewObjectNames();
- writeLog(pageContext," Length of the VOs from Rootm AM "+rootViewNames.length);
-
for (int j =0 ;j
- {
- pageContext.writeDiagnostics(this, j +" Value "+rootViewNames[j]);
- }
- If your VO is not available in that AM, get the nested AM and then check for your VO inside that AM,
- Use the below code to get the AM if your AM is not root AM,
- public OAApplicationModule getRequestedAM(OAPageContext pageContext, String requestedAMName)
- {
- writeLog(pageContext,"Requested AM called to check the AM "+requestedAMName );
- String amName = "";
- String objectivesAMName = requestedAMName;//"ObjectivesAM";
- String nestedAMArray[] = pageContext.getRootApplicationModule().getApplicationModuleNames();
- pageContext.writeDiagnostics(this,"Root AM=>"+pageContext.getRootApplicationModule().getName() + " Child AMs=>"+ nestedAMArray.length,1);
- OAApplicationModule currentAM = null;
- currentAM = (OAApplicationModule)pageContext.getRootApplicationModule();
- for(int i = 0; i < nestedAMArray.length; i++)
- {
- amName = nestedAMArray;
- pageContext.writeDiagnostics(this,"Nested AM Name=>"+amName + "and amName.indexOf(objectivesAMName) "+amName.indexOf(objectivesAMName),1);
- currentAM = (OAApplicationModule)pageContext.getRootApplicationModule().findApplicationModule(amName);
- //Get the view names
- String[] viewNames = currentAM.getViewObjectNames();
-
for (int i =0 ;i
- {
- writeLog(pageContext,i +" Value "+viewNames);
- }
- if(!(amName.indexOf(objectivesAMName)==-1))
- {
- pageContext.writeDiagnostics(this,"Found Handle to My Nested AM " + amName ,1);
- break;
- }
- }
- return currentAM;
- }
writeLog(pageContext, "Room AM"+ pageContext.getRootApplicationModule()); String[] rootViewNames = pageContext.getRootApplicationModule().getViewObjectNames(); writeLog(pageContext," Length of the VOs from Rootm AM "+rootViewNames.length); for (int j =0 ;j"+pageContext.getRootApplicationModule().getName() + " Child AMs=>"+ nestedAMArray.length,1); OAApplicationModule currentAM = null; currentAM = (OAApplicationModule)pageContext.getRootApplicationModule(); for(int i = 0; i < nestedAMArray.length; i++) { amName = nestedAMArray; pageContext.writeDiagnostics(this,"Nested AM Name=>"+amName + "and amName.indexOf(objectivesAMName) "+amName.indexOf(objectivesAMName),1); currentAM = (OAApplicationModule)pageContext.getRootApplicationModule().findApplicationModule(amName); //Get the view names String[] viewNames = currentAM.getViewObjectNames(); for (int i =0 ;i
Getting & Setting Value,Capturing the value from VO and setting Explictiy in EO
- import oracle.apps.fnd.framework.OAViewObject;
- import oracle.apps.fnd.framework.OARow;
- public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
- {
- super.processFormRequest(pageContext, webBean);
- OAApplicationModule am = pageContext.getApplicationModule(webBean);
- OAViewObject oaviewobject1 =(OAViewObject)am.findViewObject("NewEmployeeVO1");
- if (oaviewobject1 != null)
- {
- System.out.println("Inside");
- oaviewobject1.reset(); //New line added
- oaviewobject1.next(); //new line added
- OARow row = (OARow)oaviewobject1.getCurrentRow();
- String fullName = (String)row.getAttribute("FullName");
- OAViewObject vo1 = (OAViewObject)am.findViewObject("EmployeeEOVO1");
- vo1.reset();
- if (vo1 != null)
- {
- do
- {
- if(!vo1.hasNext())
- break;
- vo1.next();
- EmployeeEOVORowImpl lcerl = (EmployeeEOVORowImpl)vo1.getCurrentRow();
- lcerl.setFullName(fullName);
- }while(true);
- }
- }
import oracle.apps.fnd.framework.OAViewObject; import oracle.apps.fnd.framework.OARow; public void processFormRequest(OAPageContext pageContext, OAWebBean webBean) { super.processFormRequest(pageContext, webBean); OAApplicationModule am = pageContext.getApplicationModule(webBean); OAViewObject oaviewobject1 =(OAViewObject)am.findViewObject("NewEmployeeVO1"); if (oaviewobject1 != null) { System.out.println("Inside"); oaviewobject1.reset(); //New line added oaviewobject1.next(); //new line added OARow row = (OARow)oaviewobject1.getCurrentRow(); String fullName = (String)row.getAttribute("FullName"); OAViewObject vo1 = (OAViewObject)am.findViewObject("EmployeeEOVO1"); vo1.reset(); if (vo1 != null) { do { if(!vo1.hasNext()) break; vo1.next(); EmployeeEOVORowImpl lcerl = (EmployeeEOVORowImpl)vo1.getCurrentRow(); lcerl.setFullName(fullName); }while(true); } }
vo.initQuery
- MtlLotNumbersVOImpl lotVO = this.getMtlLotNumbersVO1();
- lotVO.initQuery(organizationId,inventoryItemId,lotNumber);
- MtlLotNumbersVORowImpl row1 = (MtlLotNumbersVORowImpl)lotVO.first();
MtlLotNumbersVOImpl lotVO = this.getMtlLotNumbersVO1(); lotVO.initQuery(organizationId,inventoryItemId,lotNumber); MtlLotNumbersVORowImpl row1 = (MtlLotNumbersVORowImpl)lotVO.first();
Simple查询
- 在VOimpl里中增加方法:
- import oracle.jbo.domain.Number;
- import oracle.apps.fnd.framework.OAException;
- ...
- public void initQuery(String employeeNumber)
- {
- if ((employeeNumber != null) &&
- (!("".equals(employeeNumber.trim()))))
- {
- // Do the following conversion for type consistency.
- Number empNum = null;
- try
- {
- empNum = new Number(employeeNumber);
- }
- catch(Exception e)
- {
- throw new OAException("AK", "FWK_TBX_INVALID_EMP_NUMBER");
- }
- setWhereClause("EMPLOYEE_ID = :1");
- setWhereClauseParams(null); // Always reset
- setWhereClauseParam(0, empNum);
- executeQuery();
- }
- } // end initQuery()
- 在AM建立方法,进行VO查询的调用
- import oracle.apps.fnd.framework.OAException;
- import oracle.apps.fnd.common.MessageToken;
- ...
- /*****************************************************************************
- * Initializes the detail employee query.
- *****************************************************************************
- */
- public void initDetails(String employeeNumber)
- {
- EmpfullVOImpl vo = getEmpfullVO1();
- if (vo == null)
- {
- MessageToken[] errTokens = { new MessageToken("OBJECT_NAME", "EmployeeFullVO1")};
- throw new OAException("AK", "FWK_TBX_OBJECT_NOT_FOUND", errTokens);
- }
- vo.initQuery(employeeNumber);
- } // end initDetails()
- 页面被调用时,CO执行下面代码,对前面函数进行调用和执行(调用之前,传入变量的参数..这个不能忘记)
- public void processRequest(OAPageContext pageContext, OAWebBean webBean)
- {
- super.processRequest(pageContext, webBean);
- // Get the employeeNumber parameter from the URL
- String employeeNumber = pageContext.getParameter("employeeNumber");
- // Now we want to initialize the query for our single employee
- // with all of its details.
- OAApplicationModule am = pageContext.getApplicationModule(webBean);
- Serializable[] parameters = { employeeNumber };
- am.invokeMethod("initDetails", parameters);
- }
在VOimpl里中增加方法: import oracle.jbo.domain.Number; import oracle.apps.fnd.framework.OAException; ... public void initQuery(String employeeNumber) { if ((employeeNumber != null) && (!("".equals(employeeNumber.trim())))) { // Do the following conversion for type consistency. Number empNum = null; try { empNum = new Number(employeeNumber); } catch(Exception e) { throw new OAException("AK", "FWK_TBX_INVALID_EMP_NUMBER"); } setWhereClause("EMPLOYEE_ID = :1"); setWhereClauseParams(null); // Always reset setWhereClauseParam(0, empNum); executeQuery(); } } // end initQuery() 在AM建立方法,进行VO查询的调用 import oracle.apps.fnd.framework.OAException; import oracle.apps.fnd.common.MessageToken; ... /***************************************************************************** * Initializes the detail employee query. ***************************************************************************** */ public void initDetails(String employeeNumber) { EmpfullVOImpl vo = getEmpfullVO1(); if (vo == null) { MessageToken[] errTokens = { new MessageToken("OBJECT_NAME", "EmployeeFullVO1")}; throw new OAException("AK", "FWK_TBX_OBJECT_NOT_FOUND", errTokens); } vo.initQuery(employeeNumber); } // end initDetails() 页面被调用时,CO执行下面代码,对前面函数进行调用和执行(调用之前,传入变量的参数..这个不能忘记) public void processRequest(OAPageContext pageContext, OAWebBean webBean) { super.processRequest(pageContext, webBean); // Get the employeeNumber parameter from the URL String employeeNumber = pageContext.getParameter("employeeNumber"); // Now we want to initialize the query for our single employee // with all of its details. OAApplicationModule am = pageContext.getApplicationModule(webBean); Serializable[] parameters = { employeeNumber }; am.invokeMethod("initDetails", parameters); }
设置窗口的title 和 message的使用
- String employeeName = pageContext.getParameter("employeeName");
- // Always use a translated value from Message Dictionary when setting
- // strings in your controllers.
- // Instantiate an array of message tokens and set the value for the
- // EMP_NAME token.
- MessageToken[] tokens = { new MessageToken("EMP_NAME", employeeName)};
- // Now, get the translated message text including the token value.
- String pageHeaderText =
- pageContext.getMessage("AK", "FWK_TBX_T_EMP_HEADER_TEXT", tokens);
- // Set the employee-specific page title (which also appears in
- // the breadcrumbs). Note that we know this controller is
- // associated with the pageLayout region, which is why we cast the
- // webBean to an OAPageLayoutBean before calling setTitle.
- ((OAPageLayoutBean)webBean).setTitle(pageHeaderText);
String employeeName = pageContext.getParameter("employeeName"); // Always use a translated value from Message Dictionary when setting // strings in your controllers. // Instantiate an array of message tokens and set the value for the // EMP_NAME token. MessageToken[] tokens = { new MessageToken("EMP_NAME", employeeName)}; // Now, get the translated message text including the token value. String pageHeaderText = pageContext.getMessage("AK", "FWK_TBX_T_EMP_HEADER_TEXT", tokens); // Set the employee-specific page title (which also appears in // the breadcrumbs). Note that we know this controller is // associated with the pageLayout region, which is why we cast the // webBean to an OAPageLayoutBean before calling setTitle. ((OAPageLayoutBean)webBean).setTitle(pageHeaderText);
Create 基本程序
- 在AM中,VO实例化代码
- public void createEmployee()
- {
- OAViewObject vo = (OAViewObject)getEmpfullVO1();
- // Per the coding standards, this is the proper way to initialize a
- // VO that is used for both inserts and queries. See View Objects
- // in Detail in the Developer's Guide for additional information.
- if (!vo.isPreparedForExecution())
- {
- vo.executeQuery();
- }
- Row row = vo.createRow();
- vo.insertRow(row);
- // Required per OA Framework Model Coding Standard M69
- row.setNewRowState(Row.STATUS_INITIALIZED);
- } // end createEmployee()
CO 的processRequest中增加 VO实例化调用
if (!pageContext.isFormSubmission())
- {
- OAApplicationModule am = pageContext.getApplicationModule(webBean);
- am.invokeMethod("createEmployee", null);
- }
CO 的processFormRequest中增加对按钮
"Apply"的处理if (pageContext.getParameter("Apply") != null)
- {
- // Generally in the tutorial application and the labs, we've illustrated
- // all BC4J interaction on the server (except for the AMs, of course). Here,
- // we're dealing with the VO directly so the comments about the reasons
- // why we're obtaining values from the VO and not the request make sense
- // in context.
- "COLOR: #ff0000">OAViewObject vo = (OAViewObject)am.findViewObject("EmpfullVO1");
// Note that we have to get this value from the VO because the EO will
- // assemble it during its validation cycle.
- // For performance reasons, we should generally be calling getEmployeeName()
- // on the EmployeeFullVORowImpl object, but we don't want to do this
- // on the client so we're illustrating the interface-appropriate call. If
- // we implemented this code in the AM where it belongs, we would use the
- // other approach.
- String employeeName =
- (String)vo.getCurrentRow().getAttribute("FullName");
- // We need to get a String so we can pass it to the MessageToken array below. Note
- // that we are getting this value from the VO (we could also get it from
- // the Bean as shown in the Drilldown to Details lab) because the item style is messageStyledText,
- // so the value isn't put on the request like a messaqeTextInput value is.
- Number employeeNumber =
- (Number)vo.getCurrentRow().getAttribute("EmployeeId");
- String employeeNum = String.valueOf(employeeNumber.intValue());
- // Simply telling the transaction to commit will cause all the Entity Object validation
- // to fire.
- //
- // Note: there's no reason for a developer to perform a rollback. This is handled by
- // the framework if errors are encountered.
am.invokeMethod("apply");
// Assuming the "commit" succeeds, navigate back to the "Search" page with
- // the user's search criteria intact and display a "Confirmation" message
- // at the top of the page.
MessageToken[] tokens =
- { new MessageToken("EMP_NAME", employeeName),
- new MessageToken("EMP_NUMBER", employeeNum) };
- OAException confirmMessage =
- new OAException("AK", "FWK_TBX_T_EMP_CREATE_CONFIRM", tokens,
- OAException.CONFIRMATION, null);
- // Per the UI guidelines, we want to add the confirmation message at the
- // top of the search/results page and we want the old search criteria and
- // results to display.
pageContext.putDialogMessage(confirmMessage); // retain AM
- pageContext.forwardImmediately("OA.jsp?page=/lyf4/oracle/apps/ak/emp/webui/EmpSearchPG",
- null,
- OAWebBeanConstants.KEEP_MENU_CONTEXT,
- null, null, true,
- OAWebBeanConstants.ADD_BREAD_CRUMB_NO);
- }
在AM中增加apply函数对事务commit
public void apply()
- {
- // 这里只有一个事务吗?
- getTransaction().commit();
- }
在AM中,VO实例化代码 public void createEmployee() { OAViewObject vo = (OAViewObject)getEmpfullVO1(); // Per the coding standards, this is the proper way to initialize a // VO that is used for both inserts and queries. See View Objects // in Detail in the Developer's Guide for additional information. if (!vo.isPreparedForExecution()) { vo.executeQuery(); } Row row = vo.createRow(); vo.insertRow(row); // Required per OA Framework Model Coding Standard M69 row.setNewRowState(Row.STATUS_INITIALIZED); } // end createEmployee()CO 的processRequest中增加 VO实例化调用
if (!pageContext.isFormSubmission()) { OAApplicationModule am = pageContext.getApplicationModule(webBean); am.invokeMethod("createEmployee", null); }
CO 的processFormRequest中增加对按钮"Apply"的处理
if (pageContext.getParameter("Apply") != null) { // Generally in the tutorial application and the labs, we've illustrated // all BC4J interaction on the server (except for the AMs, of course). Here, // we're dealing with the VO directly so the comments about the reasons // why we're obtaining values from the VO and not the request make sense // in context. OAViewObject vo = (OAViewObject)am.findViewObject("EmpfullVO1");
// Note that we have to get this value from the VO because the EO will // assemble it during its validation cycle. // For performance reasons, we should generally be calling getEmployeeName() // on the EmployeeFullVORowImpl object, but we don't want to do this // on the client so we're illustrating the interface-appropriate call. If // we implemented this code in the AM where it belongs, we would use the // other approach. String employeeName = (String)vo.getCurrentRow().getAttribute("FullName"); // We need to get a String so we can pass it to the MessageToken array below. Note // that we are getting this value from the VO (we could also get it from // the Bean as shown in the Drilldown to Details lab) because the item style is messageStyledText, // so the value isn't put on the request like a messaqeTextInput value is. Number employeeNumber = (Number)vo.getCurrentRow().getAttribute("EmployeeId"); String employeeNum = String.valueOf(employeeNumber.intValue()); // Simply telling the transaction to commit will cause all the Entity Object validation // to fire. // // Note: there's no reason for a developer to perform a rollback. This is handled by // the framework if errors are encountered.
am.invokeMethod("apply");
// Assuming the "commit" succeeds, navigate back to the "Search" page with // the user's search criteria intact and display a "Confirmation" message // at the top of the page.
MessageToken[] tokens = { new MessageToken("EMP_NAME", employeeName), new MessageToken("EMP_NUMBER", employeeNum) }; OAException confirmMessage = new OAException("AK", "FWK_TBX_T_EMP_CREATE_CONFIRM", tokens, OAException.CONFIRMATION, null); // Per the UI guidelines, we want to add the confirmation message at the // top of the search/results page and we want the old search criteria and // results to display.
pageContext.putDialogMessage(confirmMessage); // retain AM pageContext.forwardImmediately("OA.jsp?page=/lyf4/oracle/apps/ak/emp/webui/EmpSearchPG", null, OAWebBeanConstants.KEEP_MENU_CONTEXT, null, null, true, OAWebBeanConstants.ADD_BREAD_CRUMB_NO); }
在AM中增加apply函数对事务commit
public void apply() { // 这里只有一个事务吗? getTransaction().commit(); }
调用页面代码
- pageContext.setForwardURL("OA.jsp?page=/lyf4/oracle/apps/ak/emp/webui/EmployeePG",
- null,
- OAWebBeanConstants.KEEP_MENU_CONTEXT,
- null,
- null,
- true, // Retain AM
- OAWebBeanConstants.ADD_BREAD_CRUMB_YES,
- OAWebBeanConstants.IGNORE_MESSAGES);
pageContext.setForwardURL("OA.jsp?page=/lyf4/oracle/apps/ak/emp/webui/EmployeePG", null, OAWebBeanConstants.KEEP_MENU_CONTEXT, null, null, true, // Retain AM OAWebBeanConstants.ADD_BREAD_CRUMB_YES, OAWebBeanConstants.IGNORE_MESSAGES);
处理back button
页面初始化时候,建立一有名字的事务
public void processRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processRequest(pageContext, webBean);
if (!pageContext.isBackNavigationFired(false))
{
TransactionUnitHelper.startTransactionUnit(pageContext, "empCreateTxn");if (!pageContext.isFormSubmission())
{
OAApplicationModule am = pageContext.getApplicationModule(webBean);
am.invokeMethod("createEmployee", null);
}
} else
{
if (!TransactionUnitHelper.isTransactionUnitInProgress(pageContext,
"empCreateTxn",
true))
{
// We got here through some use of the browser "Back" button, so we
// want to display a stale data error and disallow access to the page.
// If this were a real application, we would probably display a more
// context-specific message telling the user she can't use the browser
// "Back" button and the "Create" page. Instead, we wanted to illustrate
// how to display the Applications standard NAVIGATION ERROR message.OADialogPage dialogPage = new OADialogPage(NAVIGATION_ERROR);
pageContext.redirectToDialogPage(dialogPage);
}
}
}在AM中,建立数据回滚函数
public void rollbackEmployee()
{
Transaction txn = getTransaction();
// This small optimization ensures that we don't perform a rollback
// if we don't have to.
if (txn.isDirty())
{
txn.rollback();
}
} // end rollbackEmployee()在需要时,对事务进行关闭
if (TransactionUnitHelper.isTransactionUnitInProgress(pageContext, "empCreateTxn", false
{
am.invokeMethod("rollbackEmployee");
TransactionUnitHelper.endTransactionUnit(pageContext, "empCreateTxn");
}
检查主键的唯一性,同时在缓存和数据进行检查(在EO中进行数据验证检查)
if (value != null)
{
OADBTransaction transaction = getOADBTransaction();
Object[] employeeKey =
{ value };
EntityDefImpl empDefinition = empEOImpl.getDefinitionObject();
empEOImpl employee =
(empEOImpl)empDefinition.findByPrimaryKey(transaction,
new Key(employeeKey));//findByPrimaryKey 函数会先检查缓存,然后检查数据库
if (employee != null)
{
throw // EO name
// EO PK
// Attribute Name
// Attribute value
// Message product short name
new OAAttrValException(OAException.TYP_ENTITY_OBJECT,
getEntityDef().getFullName(), getPrimaryKey(),
"EmployeeId", value, "AK",
"FWK_TBX_T_EMP_ID_UNIQUE"); // Message name
}
}
进行数据的初始化,应该在EO的create函数中进行...
下面是取序列,然后对员工id进行初始化
public void create(AttributeList attributeList)
{
super.create(attributeList);
OADBTransaction transaction = getOADBTransaction();
Number employeeId = transaction.getSequenceValue("FWK_TBX_EMPLOYEES_S");
setEmployeeId(employeeId);}
日期验证
protected void validateStartDate(Date value)
{if (value != null)
{OADBTransaction transaction = getOADBTransaction();
long sysdate = transaction.getCurrentDBDate().dateValue().getTime();
long startDate = value.dateValue().getTime();if (startDate < sysdate)
{
throw // EO name
// EO PK
// Attribute Name
// Attribute value
// Message product short name
new OAAttrValException(OAException.TYP_ENTITY_OBJECT,
getEntityDef().getFullName(), getPrimaryKey(),
"StartDate", value, "AK",
"FWK_TBX_T_START_DATE_PAST"); // Message name
}}
}
VO循环迭代
public void deleteEmployee(String employeeNumber)
{
// First, we need to find the selected employee in our VO.
// When we find it, we call remove( ) on the row which in turn
// calls remove on the associated EmployeeEOImpl object.
int empToDelete = Integer.parseInt(employeeNumber);OAViewObject vo = (OAViewObject)getempVO1();
empVORowImpl row = null;
// This tells us the number of rows that have been fetched in the
// row set, and will not pull additional rows in like some of the
// other "get count" methods.
int fetchedRowCount = vo.getFetchedRowCount();// We use a separate iterator -- even though we could step through the
// rows without it -- because we don't want to affect row currency.
RowSetIterator deleteIter = vo.createRowSetIterator("deleteIter");
if (fetchedRowCount > 0)
{
deleteIter.setRangeStart(0);
deleteIter.setRangeSize(fetchedRowCount);
for (int i = 0; i < fetchedRowCount; i++)
{
row = (empVORowImpl)deleteIter.getRowAtRangeIndex(i);// For performance reasons, we generate ViewRowImpls for all
// View Objects. When we need to obtain an attribute value,
// we use the named accessors instead of a generic String lookup.
// Number primaryKey = (Number)row.getAttribute("EmployeeId");
Number primaryKey = row.getEmployeeId();
if (primaryKey.compareTo(empToDelete) == 0)
{
// This performs the actual delete.
row.remove();
getTransaction().commit();
break; // only one possible selected row in this case
}
}
}
// Always close the iterator when you're done.
deleteIter.closeRowSetIterator();
}
}
删除确认窗口
else if ("delete".equals(pageContext.getParameter(EVENT_PARAM)))
{
// The user has clicked a "Delete" icon so we want to display a "Warning"
// dialog asking if she really wants to delete the employee. Note that we
// configure the dialog so that pressing the "Yes" button submits to
// this page so we can handle the action in this processFormRequest( ) method.String employeeNumber = pageContext.getParameter("empNum");
String employeeName = pageContext.getParameter("empName");MessageToken[] tokens = { new MessageToken("EMP_NAME", employeeName)};
OAException mainMessage = new OAException("AK", "FWK_TBX_T_EMP_DELETE_WARN", tokens);// Note that even though we're going to make our Yes/No buttons submit a
// form, we still need some non-null value in the constructor's Yes/No
// URL parameters for the buttons to render, so we just pass empty
// Strings for this.
OADialogPage dialogPage = new OADialogPage(OAException.WARNING,
mainMessage, null, "", "");// Always use Message Dictionary for any Strings you want to display.
String yes = pageContext.getMessage("AK", "FWK_TBX_T_YES", null);
String no = pageContext.getMessage("AK", "FWK_TBX_T_NO", null);// We set this value so the code that handles this button press is
// descriptive.
dialogPage.setOkButtonItemName("DeleteYesButton");// The following configures the Yes/No buttons to be submit buttons,
// and makes sure that we handle the form submit in the originating
// page (the "Employee" summary) so we can handle the "Yes"
// button selection in this controller.
dialogPage.setOkButtonToPost(true);
dialogPage.setNoButtonToPost(true);
dialogPage.setPostToCallingPage(true);// Now set our Yes/No labels instead of the default OK/Cancel.
dialogPage.setOkButtonLabel(yes);
dialogPage.setNoButtonLabel(no);// We need to keep hold of the employeeNumber and employeeName.
// The OADialogPage gives us a convenient means
// of doing this. Note that the use of the Hashtable is
// most appropriate for passing multiple parameters. See the OADialogPage
// javadoc for an alternative when dealing with a single parameter.
java.util.Hashtable formParams = new java.util.Hashtable(1);
formParams.put("empNum", employeeNumber);
formParams.put("empName", employeeName);
dialogPage.setFormParameters(formParams);
pageContext.redirectToDialogPage(dialogPage);
}
删除调用及显示删除信息
else if (pageContext.getParameter("DeleteYesButton") != null)
{
// User has confirmed that she wants to delete this employee.
// Invoke a method on the AM to set the current row in the VO and
// call remove() on this row.
String employeeNumber = pageContext.getParameter("empNum");
String employeeName = pageContext.getParameter("empName");
Serializable[] parameters = { employeeNumber };
OAApplicationModule am = pageContext.getApplicationModule(webBean);
am.invoke