|
|
|
ADF как в Java методе вызвать DataControl
|
|||
|---|---|---|---|
|
#18+
Добрый день! Пришлось начать работать с ADF. Много чего не понятного, и в Java я не особенно скиловый. На уровне Model в AM создана функция возвращающая некоторое значение. На основе класса AM создан DataControl содержащий эту функцию. Теперь в проекте ViewController создаю Java-класс в котором мне надо вызвать ту самую функцию в виде DataControl или метода Java из AM. Может кто делал подобное и может привести примеры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2013, 16:45:08 |
|
||
|
ADF как в Java методе вызвать DataControl
|
|||
|---|---|---|---|
|
#18+
MikTar, Вообще примеры в инете смотреть надо Andrejus Baranovskis's Blog Я иам много взял. Твоё решение где-то лежит в плоскости В методе DCBindingContainer bc = (DCBindingContainer)this.getBindings(); OperationBinding operationBinding = bc.getOperationBinding("твой метод"); Object result =operationBinding.execute(); ------------------ public BindingContainer getBindings() { if (this.bindings == null) { FacesContext fc = FacesContext.getCurrentInstance(); this.bindings = (BindingContainer)fc.getApplication().evaluateExpressionGet(fc, "#{bindings}", BindingContainer.class); } return this.bindings; } А очень часто если правильно организовать adf-task-flow то adf сам вызывает нужные методы без backed beena ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2013, 17:48:58 |
|
||
|
ADF как в Java методе вызвать DataControl
|
|||
|---|---|---|---|
|
#18+
Я уже смотрел блог Барановскиса. По аналогии попробовал написать свой код, проблема в том, что возвращается ошибка: NullPointerError, а эта ошибка, судя по описанию, может быть от чего угодно ( Вот сам код метода: private String getCookieTextFromOracle() { String sResult = ""; BindingContext bCtx = BindingContext.getCurrent(); DCBindingContainer DcCon = (DCBindingContainer)bCtx.getCurrentBindingsEntry(); // Note "initEmpView" is the Id of actionMethod binding in PageDefinition OperationBinding oper = DcCon.getOperationBinding("callStoredFunctionNEW_SESSION"); //If a method has a parameters you can pass it through the below method // oper.getParamsMap().put("Param1Name", "Param1Value"); // oper.getParamsMap().put("Param2Name", "Param2Value"); //Execute a method oper.execute(); //Check for error after executing the method if (oper.getErrors().size() > 0) { //It has errors //Handle an errors here } Object operationResult = oper.getResult(); if (operationResult != null) { // operationResult is an instance of anonymous inner class // which (fortunatly) implements an Iterator interface Iterator result = (Iterator)operationResult; // Only single result item is expected,contaning a single column while (result.hasNext()) { Map map = (Map)result.next(); // Get feeling analyzer response sResult = (String)map.get("Column0"); } } return sResult; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2013, 10:44:31 |
|
||
|
ADF как в Java методе вызвать DataControl
|
|||
|---|---|---|---|
|
#18+
MikTar По аналогии попробовал написать свой код, проблема в том, что возвращается ошибка: NullPointerError, а эта ошибка, судя по описанию, может быть от чего угодно Ну так посмотрите стэк ошибок, там будет видно, в каком месте возникает NullPointerError ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2013, 10:46:29 |
|
||
|
ADF как в Java методе вызвать DataControl
|
|||
|---|---|---|---|
|
#18+
Пришлось прибиндить DataControl к страничке и тогда только заработало без ошибок. А можно вызвать функция Java созданную на уровне Model в классе Java на уровне ViewController? Или это можно сделать только через создание DataControl и прибиндивание его к страничке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2013, 13:50:38 |
|
||
|
ADF как в Java методе вызвать DataControl
|
|||
|---|---|---|---|
|
#18+
MikTarПришлось прибиндить DataControl к страничке и тогда только заработало без ошибок. А можно вызвать функция Java созданную на уровне Model в классе Java на уровне ViewController? Или это можно сделать только через создание DataControl и прибиндивание его к страничке? Можно, конечно, создать AM "на лету" и вызвать напрямую. Только непонятно, зачем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2013, 13:54:30 |
|
||
|
ADF как в Java методе вызвать DataControl
|
|||
|---|---|---|---|
|
#18+
MOHAX777, я имел в виду возможность из функции Java "слоя" ViewController вызвать функцию Java из "слоя" Model? Я пробовал прописать Import в классе Java, но что-то не получилось. Эти два слоя (DataControl и Model) напрямую не связаны, нужны посредники в виде прибиндивания и создания DataControl? Необходимость мне кажется сама напрашивается, создается приложение для работы с БД, нужно постоянно дергать пакеты Оракла, получать какую-то информацию и использовать ее в "слое" ViewController. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2013, 12:15:29 |
|
||
|
ADF как в Java методе вызвать DataControl
|
|||
|---|---|---|---|
|
#18+
MikTar, Привет. На мой взгяд философия ADF и состоит в том,что ты биндишь AM биндишь ViewIbject и методы AM ,а в FacesContex их находишь по именам. Ну если очень неймётся можно сделать преобразразование в твой класс AM http://docs.oracle.com/cd/E17904_01/web.1111/b31974/bcservices.htm#BABBDDHH ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2013, 13:29:12 |
|
||
|
ADF как в Java методе вызвать DataControl
|
|||
|---|---|---|---|
|
#18+
MikTarMOHAX777, я имел в виду возможность из функции Java "слоя" ViewController вызвать функцию Java из "слоя" Model? Функции из "слоёв" не вызываются. Вызываются функции классов, находящихся в проекте Model. Всё зависит от того, какие именно функции вы хотите вызывать. Если функции из Application Module Implementation, то да вызывать их напрямуй бессмысленно из-за логики реализации AM. Но никто не мешает вызывать функции из вашего класса, реализующего "утилитарный" функционал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2013, 09:51:32 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=247&tid=2130088]: |
0ms |
get settings: |
18ms |
get forum list: |
25ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
47ms |
get topic data: |
19ms |
get forum data: |
4ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 278ms |
| total: | 470ms |

| 0 / 0 |
