11.03.2013

Использование JavaScript в OAF

Примеры использования JS в Oracle Applications Framework. Вызов JAVA-методов из кода JavaScript
Для того, чтобы пользовательская JavaScript-функция вызывалась при нажатии на кнопку, достаточно единоразово выполнить код привязки:
public void processRequest(OAPageContext pageContext, 
                             OAWebBean webBean)
{
  super.processRequest(pageContext, webBean);
  clearButtonSetOnClick(pageContext, webBean);
}

private void clearButtonSetOnClick(OAPageContext pageContext, 
                                   OAWebBean webBean) {
   OAApplicationModule am = pageContext.getApplicationModule(webBean);
   StringBuffer clearFunc = new StringBuffer();

   clearFunc.append("function clearFunction()");
   clearFunc.append("{");
   // для элементов типа input
   clearFunc.append("document.getElementById('Field1').value='';");
   // для элементов form value
   clearFunc.append("document.getElementById('fvField1').value='';");
   // для элементов checkbox
   clearFunc.append("document.getElementById('MyChkBox').checked=false;");
   clearFunc.append("}");
   pageContext.putJavaScriptFunction("clearFunction", 
                                      clearFunc.toString());
   OAButtonBean clearButton = (OAButtonBean)
                              webBean.findChildRecursive("ClearBtn");
   String javaSClear = "javascript:clearFunction();";
   clearButton.setOnClick(javaSClear);
}
Так же можно привязать выполнение кода к другим событиям, например onLoad. Удобно, когда нужно выполнить сценарий после загрузки страницы:
   OABodyBean bodyBean = (OABodyBean) pageContext.getRootWebBean();
   bodyBean.setOnLoad("javascript:clearFunction();");  
Из JavaScript-сценария можно вызвать код на JAVA, хотя и не совсем явным способом. Для этого добавляем в JS-скрипт строку, инициирующую событие "clear" на странице
   clearFunc.append("function clearFunction()");
   clearFunc.append("{");
   ...   
   clearFunc.append("submitForm('DefaultFormName',1,{'evtSrcRowIdx':'','evtSrcRowId':'',event:'clear',source:'test'});return false;");
   clearFunc.append("}");
Обрабатываем созданное событие в методе processFormRequest
  public void processFormRequest(OAPageContext pageContext, 
                                 OAWebBean webBean)
  {
    super.processFormRequest(pageContext, webBean);
    if ("clear".equals(pageContext.getParameter(EVENT_PARAM))){
       myProc();
    }
  }

Комментариев нет :