<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Marshal&#039;s Blog &#187; ria</title>
	<atom:link href="http://marshal.easymorse.com/archives/tag/ria/feed" rel="self" type="application/rss+xml" />
	<link>http://marshal.easymorse.com</link>
	<description>It&#039;s swap of marshal&#039;s memory.</description>
	<lastBuildDate>Mon, 30 Jan 2012 07:03:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Flex/AS3中ArrayCollection不能完全绑定问题</title>
		<link>http://marshal.easymorse.com/archives/1333?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flexas3%25e4%25b8%25adarraycollection%25e4%25b8%258d%25e8%2583%25bd%25e5%25ae%258c%25e5%2585%25a8%25e7%25bb%2591%25e5%25ae%259a%25e9%2597%25ae%25e9%25a2%2598</link>
		<comments>http://marshal.easymorse.com/archives/1333#comments</comments>
		<pubDate>Thu, 30 Apr 2009 13:48:23 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[ria]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/archives/1333</guid>
		<description><![CDATA[比如这样的代码： private function getResults(event:ResultEvent):void{ if(this.getUsers.lastResult.users.user is ObjectProxy){ userResults=new ArrayCollection(); userResults.addItem(event.result.users.user); }else{ userResults=event.result.users.user; 完整示例见通过BlazeDS实现flex和服务器的交互。当为该ArrayCollection增加事件监听器后，发现数组中最后一条记录修改后不能被监听到。监听代码如下： userResults.addEventListener(CollectionEvent.COLLECTION_CHANGE,function(event:CollectionEvent){ Alert.show(&#34;列表数据已变化&#34;); Alert.show(&#34;&#62;&#62;&#34;+(event.items[0] as PropertyChangeEvent).oldValue); }); 这个问题，见flex sdk的bug管理记录： https://bugs.adobe.com/jira/browse/SDK-17286 针对这里的示例，可做如下修改： // userResults=event.result.users.user; userResults=new ArrayCollection(event.result.users.user.toArray());]]></description>
			<content:encoded><![CDATA[<p>比如这样的代码：</p>
<p>
<div class="wlWriterSmartContent" id="scid:F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:c6ebf4c3-39e7-4fe6-b55d-6903920a2921" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre  style="width:100%;;">
<div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

--><span style="color: #000000;">private </span><span style="color: #0000FF;">function</span><span style="color: #000000;"> getResults(event:ResultEvent):</span><span style="color: #0000FF;">void</span><span style="color: #000000;">{
    </span><span style="color: #0000FF;">if</span><span style="color: #000000;">(</span><span style="color: #0000FF;">this</span><span style="color: #000000;">.getUsers.lastResult.users.user is ObjectProxy){
        userResults</span><span style="color: #000000;">=</span><span style="color: #0000FF;">new</span><span style="color: #000000;"> ArrayCollection();
        userResults.addItem(event.result.users.user);
    }</span><span style="color: #0000FF;">else</span><span style="color: #000000;">{
        userResults</span><span style="color: #000000;">=</span><span style="color: #000000;">event.result.users.user;</span></div>
</pre>
</div>
<p>完整示例见<a href="http://marshal.easymorse.com/archives/1323" title="通过BlazeDS实现flex和服务器的交互">通过BlazeDS实现flex和服务器的交互</a>。当为该ArrayCollection增加事件监听器后，发现数组中最后一条记录修改后不能被监听到。监听代码如下：</p>
<p><div class="wlWriterSmartContent" id="scid:F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:6a93578c-775c-4998-ad18-288813645a13" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre  style="width:100%;;">
<div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

--><span style="color: #000000;">userResults.addEventListener(CollectionEvent.COLLECTION_CHANGE,</span><span style="color: #0000FF;">function</span><span style="color: #000000;">(event:CollectionEvent){
    Alert.show(</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">列表数据已变化</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">);
    Alert.show(</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">+</span><span style="color: #000000;">(event.items[</span><span style="color: #000000;">0</span><span style="color: #000000;">] as PropertyChangeEvent).oldValue);
});</span></div>
</pre>
</div>
<p><span id="more-1333"></span></p>
<p>这个问题，见flex sdk的bug管理记录：</p>
<blockquote>
<p><a href="https://bugs.adobe.com/jira/browse/SDK-17286">https://bugs.adobe.com/jira/browse/SDK-17286</a></p>
</blockquote>
<p>针对这里的示例，可做如下修改：</p>
<div class="wlWriterSmartContent" id="scid:F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:d68b27be-3b8d-4e05-8e2f-4323333811df" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre  style="width:100%;;">
<div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

--><span style="color: #008000;">//</span><span style="color: #008000;"> userResults=event.result.users.user;</span><span style="color: #008000;">
</span><span style="color: #000000;">userResults</span><span style="color: #000000;">=</span><span style="color: #0000FF;">new</span><span style="color: #000000;"> ArrayCollection(event.result.users.user.toArray());</span></div>
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/1333/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用flex/as3的trace()方法</title>
		<link>http://marshal.easymorse.com/archives/1330?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25bd%25bf%25e7%2594%25a8flexas3%25e7%259a%2584trace%25e6%2596%25b9%25e6%25b3%2595</link>
		<comments>http://marshal.easymorse.com/archives/1330#comments</comments>
		<pubDate>Thu, 30 Apr 2009 11:31:33 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[ria]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/archives/1330</guid>
		<description><![CDATA[ActionScript3中有类似java的System.out.print()功能，用于调试脚本。使用的步骤如下。 在代码中使用trace()方法 以下是flex示例代码片段：   private function showUserResults():void{ trace(userResults); for each(var user:Object in userResults){ trace(user); } } 使用带debug功能的flash player 可根据浏览器下载带debug功能的flash player，下载地址： http://www.adobe.com/support/flashplayer/downloads.html 安装后打开flash，鼠标右键菜单的样子： 在flex builder中debug运行程序 首先需要启动tomcat，让flex应用运行起来。然后，在需要调试的mxml文件上鼠标右键，选择debug as flex application，将自动启动浏览器打开flex应用。在flex builder界面的console窗口中，可以看到trace()方法打印的内容。]]></description>
			<content:encoded><![CDATA[<p>ActionScript3中有类似java的System.out.print()功能，用于调试脚本。使用的步骤如下。</p>
<h3>在代码中使用trace()方法</h3>
<p>以下是flex示例代码片段：</p>
<p> </p>
<div id="scid:F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:a25ec37e-9d17-42eb-9eeb-2c045295b8ba" class="wlWriterSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre style="width: 100%;">
<div><!--Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

--><span style="color: #000000;">private </span><span style="color: #0000FF;">function</span><span style="color: #000000;"> showUserResults():</span><span style="color: #0000FF;">void</span><span style="color: #000000;">{
    trace(userResults);
    </span><span style="color: #0000FF;">for</span><span style="color: #000000;"> each(</span><span style="color: #0000FF;">var</span><span style="color: #000000;"> user:Object </span><span style="color: #0000FF;">in</span><span style="color: #000000;"> userResults){
        trace(user);
    }
}</span></div>
</pre>
</div>
<h3><span id="more-1330"></span>使用带debug功能的flash player</h3>
<p>可根据浏览器下载带debug功能的flash player，下载地址：</p>
<blockquote><p><a href="http://www.adobe.com/support/flashplayer/downloads.html">http://www.adobe.com/support/flashplayer/downloads.html</a></p></blockquote>
<p>安装后打开flash，鼠标右键菜单的样子：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/04/flashdebug.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://marshal.easymorse.com/wp-content/uploads/2009/04/flashdebug-thumb.png" border="0" alt="flash.debug" width="221" height="125" /></a></p>
<h3>在flex builder中debug运行程序</h3>
<p>首先需要启动tomcat，让flex应用运行起来。然后，在需要调试的mxml文件上鼠标右键，选择debug as flex application，将自动启动浏览器打开flex应用。在flex builder界面的console窗口中，可以看到trace()方法打印的内容。</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/04/flexdebug.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://marshal.easymorse.com/wp-content/uploads/2009/04/flexdebug-thumb.png" border="0" alt="flex.debug" width="366" height="140" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/1330/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>通过BlazeDS实现flex和服务器的交互</title>
		<link>http://marshal.easymorse.com/archives/1323?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e9%2580%259a%25e8%25bf%2587blazeds%25e5%25ae%259e%25e7%258e%25b0flex%25e5%2592%258c%25e6%259c%258d%25e5%258a%25a1%25e5%2599%25a8%25e7%259a%2584%25e4%25ba%25a4%25e4%25ba%2592</link>
		<comments>http://marshal.easymorse.com/archives/1323#comments</comments>
		<pubDate>Wed, 29 Apr 2009 12:53:49 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[ria]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/archives/1323</guid>
		<description><![CDATA[可以认为BlazeDS是Livecycle Data Services的精简版本和免费版本（BlazeDS与Livecycle Data Services的区别）。可用于提供服务器和FLEX客户端程序的通信支持。比如这个例子使用flex DataGrid组件中只是将flex中的数组绑定和显示到列表中。实际开发中这些数组往往来源于服务器。 这是下面实现示例的界面，数据来源于tomcat服务器端。 下载和安装BlazeDS Flex Builder本身不提供BlazeDS，需要下载和安装。下载BlazeDS： http://opensource.adobe.com/wiki/display/blazeds/BlazeDS 安装很简单，解压缩即可。里面有一个blazeds.war文件，就是要用的文件。让java web项目支持和安装BlazeDS，其实就是将这个war文件中WEB-INF目录下的文件复制到自己项目中。 注意一下war文件中的web.xml文件，和servlet的集成机制就可以知道个大概。BlazeDS提供了一个SessionListener处理客户端flex程序和Servlet session之间的交互。还提供了MessageBrokerServlet，用于处理flex和web服务器之间的通信处理。 创建集成BlazeDS的FLEX Builder项目 创建flex项目，需要勾选下面条目： 然后，选择刚才解压缩blazeds.war文件路径：   其他的没什么了，创建后的目录结构：   编写简单的交互程序 这里演示使用HttpService从flex客户端发起GET请求，服务器端返回一个xml格式数据（这里做演示是一个静态的xml文件，可以通过Servlet动态生成）：   &#60;?xml version="1.0" encoding="UTF-8"?&#62; &#60;users&#62; &#60;user&#62; &#60;name&#62;张三&#60;/name&#62; &#60;birthday&#62;1999-1-1&#60;/birthday&#62; &#60;job&#62;程序员&#60;/job&#62; &#60;/user&#62; &#60;user&#62; &#60;name&#62;李四&#60;/name&#62; &#60;birthday&#62;2000-1-1&#60;/birthday&#62; &#60;job&#62;公务员&#60;/job&#62; &#60;/user&#62; &#60;user&#62; &#60;name&#62;王五&#60;/name&#62; &#60;birthday&#62;1988-2-11&#60;/birthday&#62; &#60;job&#62;销售&#60;/job&#62; &#60;/user&#62; &#60;/users&#62; 编写的flex代码：   &#60;?xml version="1.0" encoding="utf-8"?&#62; &#60;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()"&#62; &#60;mx:Script&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>可以认为BlazeDS是Livecycle Data Services的精简版本和免费版本（<a href="http://marshal.easymorse.com/archives/1312" title="BlazeDS与Livecycle Data Services的区别">BlazeDS与Livecycle Data Services的区别</a>）。可用于提供服务器和FLEX客户端程序的通信支持。比如这个例子<a href="http://marshal.easymorse.com/archives/1309" title="使用flex DataGrid组件">使用flex DataGrid组件</a>中只是将flex中的数组绑定和显示到列表中。实际开发中这些数组往往来源于服务器。</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/04/users.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://marshal.easymorse.com/wp-content/uploads/2009/04/users-thumb.png" border="0" alt="users" width="394" height="142" /></a></p>
<p>这是下面实现示例的界面，数据来源于tomcat服务器端。</p>
<p><span id="more-1323"></span></p>
<h3>下载和安装BlazeDS</h3>
<p>Flex Builder本身不提供BlazeDS，需要下载和安装。下载BlazeDS：</p>
<blockquote><p><a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS">http://opensource.adobe.com/wiki/display/blazeds/BlazeDS</a></p></blockquote>
<p>安装很简单，解压缩即可。里面有一个blazeds.war文件，就是要用的文件。让java web项目支持和安装BlazeDS，其实就是将这个war文件中WEB-INF目录下的文件复制到自己项目中。</p>
<p>注意一下war文件中的web.xml文件，和servlet的集成机制就可以知道个大概。BlazeDS提供了一个SessionListener处理客户端flex程序和Servlet session之间的交互。还提供了MessageBrokerServlet，用于处理flex和web服务器之间的通信处理。</p>
<h3>创建集成BlazeDS的FLEX Builder项目</h3>
<p>创建flex项目，需要勾选下面条目：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/04/ds1.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://marshal.easymorse.com/wp-content/uploads/2009/04/ds1-thumb.png" border="0" alt="ds.1" width="348" height="310" /></a></p>
<p>然后，选择刚才解压缩blazeds.war文件路径：</p>
<p> <a href="http://marshal.easymorse.com/wp-content/uploads/2009/04/ds2.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://marshal.easymorse.com/wp-content/uploads/2009/04/ds2-thumb.png" border="0" alt="ds.2" width="427" height="134" /></a></p>
<p>其他的没什么了，创建后的目录结构：</p>
<p> <a href="http://marshal.easymorse.com/wp-content/uploads/2009/04/ds3.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://marshal.easymorse.com/wp-content/uploads/2009/04/ds3-thumb.png" border="0" alt="ds.3" width="209" height="348" /></a></p>
<h3>编写简单的交互程序</h3>
<p>这里演示使用HttpService从flex客户端发起GET请求，服务器端返回一个xml格式数据（这里做演示是一个静态的xml文件，可以通过Servlet动态生成）：</p>
<p> </p>
<div id="scid:F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:39269b65-a83f-43f8-8955-1f322df7ce05" class="wlWriterSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre style="width: 100%;">
<div><!--
Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

--><span style="color: #0000FF;">&lt;?</span><span style="color: #FF00FF;">xml version="1.0" encoding="UTF-8"</span><span style="color: #0000FF;">?&gt;</span><span style="color: #000000;">
</span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">users</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
    </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">user</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
        </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">name</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">张三</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">name</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
        </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">birthday</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">1999-1-1</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">birthday</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
        </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">job</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">程序员</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">job</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
    </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">user</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
    </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">user</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
        </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">name</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">李四</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">name</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
        </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">birthday</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">2000-1-1</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">birthday</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
        </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">job</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">公务员</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">job</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
    </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">user</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
    </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">user</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
        </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">name</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">王五</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">name</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
        </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">birthday</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">1988-2-11</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">birthday</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
        </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">job</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">销售</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">job</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
    </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">user</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">users</span><span style="color: #0000FF;">&gt;</span></div>
</pre>
</div>
<p>编写的flex代码：</p>
<p> </p>
<div id="scid:F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:901f72fb-6d3a-4931-8c8c-5e6f7519af52" class="wlWriterSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre style="width: 100%;">
<div><!--
Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

--><span style="color: #0000FF;">&lt;?</span><span style="color: #FF00FF;">xml version="1.0" encoding="utf-8"</span><span style="color: #0000FF;">?&gt;</span><span style="color: #000000;">
</span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">mx:Application </span><span style="color: #FF0000;">xmlns:mx</span><span style="color: #0000FF;">="http://www.adobe.com/2006/mxml"</span><span style="color: #FF0000;"> layout</span><span style="color: #0000FF;">="absolute"</span><span style="color: #FF0000;">
    initialize</span><span style="color: #0000FF;">="init()"</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
    </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">mx:Script</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
        </span><span style="color: #0000FF;">&lt;![CDATA[</span><span style="color: #808080;">
            import mx.utils.ObjectProxy;
            import mx.collections.XMLListCollection;
            import mx.collections.ArrayCollection;
            import mx.rpc.events.ResultEvent;
            import mx.controls.Alert;

            [Bindable]
            private var userResults:ArrayCollection;

            private function init():void{
                getUsers.send();
            }

            private function getResults(event:ResultEvent):void{
                if(this.getUsers.lastResult.users.user is ObjectProxy){
                    userResults=new ArrayCollection();
                    userResults.addItem(event.result.users.user);
                }else{
                    userResults=event.result.users.user as ArrayCollection;
                }
            }
        </span><span style="color: #0000FF;">]]&gt;</span><span style="color: #000000;">
    </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">mx:Script</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
    </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">mx:HTTPService </span><span style="color: #FF0000;">id</span><span style="color: #0000FF;">="getUsers"</span><span style="color: #FF0000;"> url</span><span style="color: #0000FF;">="users.xml"</span><span style="color: #FF0000;"> method</span><span style="color: #0000FF;">="GET"</span><span style="color: #FF0000;"> result</span><span style="color: #0000FF;">="getResults(event)"</span><span style="color: #FF0000;"> </span><span style="color: #0000FF;">/&gt;</span><span style="color: #000000;">
    </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">mx:Panel </span><span style="color: #FF0000;">x</span><span style="color: #0000FF;">="10"</span><span style="color: #FF0000;"> y</span><span style="color: #0000FF;">="10"</span><span style="color: #FF0000;"> width</span><span style="color: #0000FF;">="431"</span><span style="color: #FF0000;"> height</span><span style="color: #0000FF;">="139"</span><span style="color: #FF0000;"> layout</span><span style="color: #0000FF;">="absolute"</span><span style="color: #FF0000;">
        title</span><span style="color: #0000FF;">="用户列表"</span><span style="color: #FF0000;"> fontSize</span><span style="color: #0000FF;">="12"</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
        </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">mx:DataGrid </span><span style="color: #FF0000;">id</span><span style="color: #0000FF;">="myGrid"</span><span style="color: #FF0000;"> x</span><span style="color: #0000FF;">="10"</span><span style="color: #FF0000;"> y</span><span style="color: #0000FF;">="10"</span><span style="color: #FF0000;"> width</span><span style="color: #0000FF;">="391"</span><span style="color: #FF0000;"> height</span><span style="color: #0000FF;">="82"</span><span style="color: #FF0000;"> editable</span><span style="color: #0000FF;">="true"</span><span style="color: #FF0000;">
            dataProvider</span><span style="color: #0000FF;">="{userResults}"</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
            </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">mx:columns</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
                </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">mx:DataGridColumn </span><span style="color: #FF0000;">headerText</span><span style="color: #0000FF;">="姓名"</span><span style="color: #FF0000;"> dataField</span><span style="color: #0000FF;">="name"</span><span style="color: #0000FF;">/&gt;</span><span style="color: #000000;">
                </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">mx:DataGridColumn </span><span style="color: #FF0000;">headerText</span><span style="color: #0000FF;">="生日"</span><span style="color: #FF0000;"> dataField</span><span style="color: #0000FF;">="birthday"</span><span style="color: #0000FF;">/&gt;</span><span style="color: #000000;">
                </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">mx:DataGridColumn </span><span style="color: #FF0000;">headerText</span><span style="color: #0000FF;">="职业"</span><span style="color: #FF0000;"> dataField</span><span style="color: #0000FF;">="job"</span><span style="color: #0000FF;">/&gt;</span><span style="color: #000000;">
            </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">mx:columns</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
        </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">mx:DataGrid</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
    </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">mx:Panel</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">mx:Application</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">
</span></div>
</pre>
</div>
<p>这里需要注意的是，xml响应内容，可以被flex通过不同策略解析。在这里是通过默认的object方式。当仅有一个user节点的时候，自动转型为对象而不是数组，多个user节点的时候才转型为数组。所以处理逻辑稍显麻烦。</p>
<p>flex的自动绑定功能和对应的元数据支持，使flex内部的模型、视图和控制代码十分清楚简明。</p>
<h3>如何自动编译MXML文件</h3>
<p>BlazeDS比LCDS少提供一个动态编译mxml的功能。比如mxml复制到webcontent目录下，lcds可以让用户访问test.mxml时，自动编译，并输出swf。</p>
<p>使用BlazeDS，可以这样设置，由flex builder编译mxml文件输出swf文件到webcontent目录下。这样显然不如lcds动态，如果是正式项目，可以通过maven和相关插件构建时编译。</p>
<p>配置flex builder编译mxml文件输出swf文件到webcontent目录：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/04/flex11.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://marshal.easymorse.com/wp-content/uploads/2009/04/flex11-thumb.png" border="0" alt="flex11" width="389" height="297" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/1323/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BlazeDS与Livecycle Data Services的区别</title>
		<link>http://marshal.easymorse.com/archives/1312?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blazeds%25e4%25b8%258elivecycle-data-services%25e7%259a%2584%25e5%258c%25ba%25e5%2588%25ab</link>
		<comments>http://marshal.easymorse.com/archives/1312#comments</comments>
		<pubDate>Tue, 28 Apr 2009 12:20:38 +0000</pubDate>
		<dc:creator>Marshal</dc:creator>
				<category><![CDATA[计算机技术]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[ria]]></category>

		<guid isPermaLink="false">http://marshal.easymorse.com/archives/1312</guid>
		<description><![CDATA[BlazeDS与Livecycle Data Services的区别，可见下面的图，暗灰色标识部分就是Livecycle Data Services有但BalzeDS没有的功能： 另外，就是BlazeDS是开源和免费的，LCDS是付费和闭源的。]]></description>
			<content:encoded><![CDATA[<p>BlazeDS与Livecycle Data Services的区别，可见下面的图，暗灰色标识部分就是Livecycle Data Services有但BalzeDS没有的功能：</p>
<p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/04/blazeds.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="339" alt="blazeds" src="http://marshal.easymorse.com/wp-content/uploads/2009/04/blazeds-thumb.jpg" width="208" border="0"></a> </p>
<p><span id="more-1312"></span>另外，就是BlazeDS是开源和免费的，LCDS是付费和闭源的。</p>
]]></content:encoded>
			<wfw:commentRss>http://marshal.easymorse.com/archives/1312/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

