我有幾個遠程對象方法,我想以不同的方式響應不同的上下文,但我寧願不設置一堆不同的RemoteObject別名。有關這樣做的任何建議?一些背景:Flex RemoteObject - 處理多個請求
比方說,我有一個管理應用程序,以不同的方式顯示銷售數據。遠程方法如下所示:
<mx:RemoteObject id="rpt" destination="AMFServer">
<mx:method name="getSalesStats" fault="getSalesStatsFault(event)"
result = "getSalesStatsSuccess(event)" />
</mx:RemoteObject>
getSalesStats方法將僱員ID和銷售類型作爲其參數。你會這樣稱呼它:
rpt.getSalesStats(120, "peanuts");
public function getSalesStatsSuccess(e:ResultEvent):void {
salesdata:ArrayCollection = e.result.rows as ArrayCollection;
salesGraph.dataProvider = salesdata;
salesGraphPanel.title = "Peanut Sales, 1990";
}
我希望能夠調用在不同環境下這種方法,有時將結果發送到一個圖表,有時一個DataGrid;我希望能夠根據用戶需要更改圖表的標題和類型。我想要的一些東西可以通過評估從服務器返回的數據來實現;該對象包含報告名稱,所以我可以評估該值。但有些事情需要根據不止是從服務器返回的內容進行更改。如果這是一個同步呼叫,那很容易;我會做這樣的事情:
function buttonOneClick():void {
myData1:ArrayCollection = getSalesStats(120, "peanuts");
myChart.dataProvider = myData1;
}
function buttonTwoClick():void {
myData2:ArrayCollection = getSalesStats(120, "cashews");
myDataGrid.dataProvider = myData2;
}
我想通過遠程方法傳遞一些東西到響應的功能,如:
rpt.getSalesStats(120, "peanuts", "clicked button one");
,但因爲服務器沒有按那當然會引發錯誤我不想要最後一個論點。有什麼想法嗎?我會澄清,如果這是令人困惑的..
我打算回覆說,我對服務器端Java代碼沒有太多的控制權,但當然這些方法只是AMF網關別名,所以我可以創建一堆這樣的代碼。 爲了簡單起見,我可以將它們全部發送給相同的結果函數並評估event.target.name以查看調用哪個方法。這可能會讓事情易於管理,因爲會有很多用戶交互組合,所以很多這些方法.. – SkippyFlipjack 2009-07-12 00:31:46