Welcome

首页 / 软件开发 / Flex / 基于flex4技术从零开发flex博客系统:5 数据存储之管理Greeting

基于flex4技术从零开发flex博客系统:5 数据存储之管理Greeting2010-04-20 cnblogs sbanGoogle App Engine for java自今年4月7日开放申请,至今不足二十日,但关于GAE for java的博文已经出现了不少。继数据存储之后,这一课要研究如何通过客户端管理Greeting,即CURD的实现。

一,列表显示

在sban.flexblog.HelloWorld.java中添加一个获取所有Greeting的接口:

public List<Greeting> getAllGreetings() {
List<Greeting> result;
try {
result = (List<Greeting>) pm.newQuery(Greeting.class).execute();
} finally {
pm.close();
}

return result;
}

在上例中,pm.newQuery(Greeting.class)负责查询所有已存的Greeting信息。List数据在Flex客户端将被映射成ArrayList。

修改Index.mxml客户端代码,修改之后最终代码如下:

<?xml version="1.0" encoding="utf-8"?>
<FxApplication xmlns="http://ns.adobe.com/mxml/2009" initialize="onInit()">
<Script>
<![CDATA[
import mx.controls.Alert;
import flash.net.URLLoader;
import flash.net.URLRequest;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.AbstractOperation;
import mx.rpc.remoting.RemoteObject;
import mx.messaging.ChannelSet;
import mx.messaging.channels.AMFChannel;
import mx.collections.ArrayCollection;
import mx.managers.CursorManager;
import mx.events.IndexChangedEvent

[Bindable]
private var _greetingData : ArrayCollection;

[Bindable]
private var _greeting : Object;

private var _remotingObj : RemoteObject = new RemoteObject("GenericDestination");

private function onInit() : void
{
configRemoting();
getAllGreetings();
}

private function configRemoting() : void
{
_remotingObj.source = "sban.flexblog.HelloWorld";
_remotingObj.endpoint = "weborb.wo";
}

private function greetViaRemoting() : void
{
var op : AbstractOperation = _remotingObj.getOperation("greet2");
var handler : Function = function(event : ResultEvent) : void
{
op.removeEventListener(ResultEvent.RESULT, handler);
getAllGreetings();
Alert.show( event.result.toString() );
};

op.addEventListener(ResultEvent.RESULT, handler);
op.send(vNameTxt.text,vContentTxt.text);
}

private function getAllGreetings() : void
{
var op : AbstractOperation = _remotingObj.getOperation("getAllGreetings");
var handler : Function = function(event : ResultEvent) : void
{
op.removeEventListener(ResultEvent.RESULT, handler);

_greetingData = ArrayCollection(event.result);
};

op.addEventListener(ResultEvent.RESULT, handler);
op.send();
}
]]>
</Script>

<layout>
<BasicLayout />
</layout>

<VGroup width="100%">
<HGroup>
<Label text="user:" />
<FxTextInput id="vNameTxt" text="sban" />
</HGroup>
<HGroup>
<Label text="content:" />
<FxTextInput id="vContentTxt" text="greeting content" />
</HGroup>

<HGroup>
<FxButton id="vSendBtn" label="remoting greet"click="greetViaRemoting()" />
</HGroup>

<FxList id="vList1" dataProvider="{_greetingData}" width="60%"itemRenderer="GreetingItemRenderer">
<layout>
<VerticalLayout />
</layout>
</FxList>

</VGroup>

<TextBox text="by sban" color="gray" bottom="10" right="10" />

</FxApplication>