PDA

Просмотр полной версии : flex data binding


darkbishop
07.10.2009, 11:07
Доброго всем времени суток, прошу помочь с такой проблемой: суть проблемы, значит дергаю я процедуру Java, которая в свою очередь дергает функцию Oracle, выходным параметром которой является Clob, проблема в том что не могу прибиндить этот Clob к DataGrid, а вот и код проблемный

private function getData():void {
DC.addEventListener(ResultEvent.RESULT,resultHandler);
DC.addEventListener(FaultEvent.FAULT,faultHandler);
DC.getData();
}

private function resultHandler(eve:ResultEvent):void{
var data:Object = eve.message.body;

}
private function faultHandler(eve:FaultEvent):void{
Alert.show(eve.message.toString());
}

]]>
</mx:Script>

<mx:RemoteObject id="DC" destination="getDataCLOB" >
<mx:method name="get_clob" result="resultHandler(event);" fault="faultHandler(event);"/>
</mx:RemoteObject>
<mx:Button label="click" click="getData()">
</mx:Button>
<mx:DataGrid name="dg" x="10" y="39" dataProvider="{data.device.device_row}">
<mx:columns>
<mx:DataGridColumn headerText="Column 1" dataField="device_name"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>,

заранее благодарен

Gubber
07.10.2009, 11:27
Проблема в том, что Flex не знает такого типа. Посмотри внимательно всякую документацию, там написано какие типы данных нормально сериализуются через BlazeDS и LCDS.
Здесь есть два варианта:
1. Простой но не самый правильный. преобразовать Clob в строку на стороне Java и на клиентскую часть паередавать уже строку.
2. Сложнее но более правильный (т.к. боооольшие объёмы данных лучше обрабатывать ассинхронно).
Подключаться к серваку не через RemoteObject, а другим способом. И передавать данные как StringBuffer, на клиенте всё собирать и уже потом отправлять в таблицу.

Первый вариант решается очевидным способом. Второй вариант - чисто теоретический, такими задачами я не занимался.

darkbishop
07.10.2009, 15:10
Спасибо большое за совет, второй способ конечно лучше но я не знаю как ещё и какой связкой можно дергать процедуры Oracle, а первый способ конечно ударит сильно по производительности, но все равно спасибо, и ещё если Вы знаете какие нибудь подходящие к данной задачи связки, будьте добры мне написать

Gubber
07.10.2009, 15:23
Самое простое, что мне приходит в голову - создать свой сервлет, который просто возвращает в поток данные. А из флекса просто дёргать URL этого сервлета и ожидать полной загрузки ;)

darkbishop
07.10.2009, 15:28
Спасибо буду думать как это сделать на сервлете, так как я с сервлетами не очень хорошо знаком, не , не так, лучше будет сказать, очень не хорошо знаком.
По началу я думал всю логику делать на Java классах, не прибегая к Web средствам реализованным на Java (боязнь за производительность), ну ладно я что-то отвлекся и ещё раз спасибо как за совет, так и за внимание

Добавлено через 6 часов 46 минут
все получилось, вместо Clob решил передать ArrayList, во Flex его конверчу в XMLList используя event.result.source