TreeにXMLをセットする

XMLを吐き出す準備が出来た所で、今までスタティックなXMLをロードしていた部分をやめて、リモートから動的にXMLを取得する様に変更を加えます。
まずはRemoteObjectの定義です。以下を追加します。

bbx.mxml(抜粋)

<mx:method name="getSummaryListXML" result="getSummaryListXML_result(event)" fault="handleFault(event)"/>

resultに対応するメソッドを実装します。

bbx.mxml(抜粋)

import mx.utils.XMLUtil;

function getSummaryListXML_result(event) : Void {
	summaryList = XMLUtil.createXML(event.result).firstChild;
}

XMLUtilとはmx.utilsに用意されているクラスで、引数にXMLのStringを与えてやる事によってXMLオブジェクトに変換してくれるユーティリティーです。
ポイントは、XMLのfirstChildという所です。(これも気が付くまでしばらくかかりました)


そして、

はもういらなくなったので、削除します。
ただし、削除した代わりに

var summaryList;

を加えておきましょう。


最後に、このTreeはアプリケーションが起動した時に自動的に表示したいと思うので、initApp()メソッドをつくり、<mx:Application>のinitialize属性に定義します。

bbx.mxml(抜粋)

<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" xmlns="*"
	pageTitle="MessageBoard with Flex" 
	initialize="initApp()">
function initApp():Void {
	remote.getSummaryListXML();
}

さらに、投稿した後に最新のリストを表示するために、下記の様に一行追加します。

bbx.mxml(抜粋)

function insertNewMessage(tempMessage:Message) : Void {
	remote.insertNewMessage(tempMessage);
	remote.getSummaryListXML();
}


これでTreeの実装が終了しました。
以上をまとめたソースです。

bbs.mxmlを別ウインドウで表示