BlazeDS整合Spring,adobe开发者中心有文章介绍:
http://www.adobe.com/devnet/flex/articles/spring_blazeds_integration.html
http://www.adobe.com/devnet/livecycle/articles/blazeds_spring_05.html
前几天在IBM developerWorks看到一篇文章,自己更改了一下:
1.服务端编程
用myeclipse8.0下载flash build4插件。首先建一个flex project,使用WTP创建flex/java组合项目,点next,在LCDS war文件中,找到自己下载的blazeds-turnkey中的blazeds.war文件。
完成之后在WEB-INF目录下flex目录中找到services-config.xml添加:
<factories>
<factory id="flexFactory" class="org.expressme.employee.mgmt.flex.FlexFactoryImpl"/>
</factories>
在remoting-config.xml中添加:
<destination id="flexService">
<properties>
<factory>flexFactory</factory>
<source>flexService</source>
<scope>application</scope>
</properties>
</destination>
注意这里的flexservice是Spring中的bean。不用spring需要写全路径。
FlexFactoryImpl.java实现如下:
public class FlexFactoryImpl implements FlexFactory {
private Log log = LogFactory.getLog(getClass());
public FactoryInstance createFactoryInstance(String id, ConfigMap properties) {
log.info("Create FactoryInstance.");
SpringFactoryInstance instance = new SpringFactoryInstance(this, id, properties);
instance.setSource(properties.getPropertyAsString(SOURCE, instance.getId()));
return instance;
}
public Object lookup(FactoryInstance instanceInfo) {
log.info("Lookup service object.");
return instanceInfo.lookup();
}
public void initialize(String id, ConfigMap configMap) {
}
}
web.xml中添加spring支持就可以了,其他的不用更改。spring配置文件和以前的一样。具体代码在附件中。
2.客户端实现
EmployeeMgmt.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955" minHeight="600" creationComplete="queryAll();">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
import org.expressme.employee.mgmt.Employee;
[Bindable]
private var employees : ArrayCollection = new ArrayCollection();
private function queryAll():void {
ro.queryAll();
}
private function resultHandler(event:ResultEvent):void {
employees = new ArrayCollection();
for each (var o : Employee in event.result as Array) {
employees.addItem(o);
}
}
private function queryByName():void {
var name : String = nameText.text;
if (name.length==0) {
queryAll();
}else{
ro.queryByName(name);
}
}
private function preCreateEmployee():void {
form_name.text = "";
form_title.selectedIndex = 0;
form_gender_male.selected = false;
form_gender_female.selected = false;
form_birth.text = "";
form_panel.visible = true;
}
private function deleteEmployee():void {
var item : Employee = employeeDataGrid.selectedItem as Employee;
if (item==null) {
Alert.show("Please select an employee first!", "Error");
}else {
ro.deleteEmployee(item.id);
employees.removeItemAt(employeeDataGrid.selectedIndex);
}
}
private function createEmployee():void{
ro.createEmployee(form_name.text,form_title.selectedItem,
form_gender_male.selected,form_birth.selectedDate);
}
]]> </fx:Script>
<fx:Declarations>
<s:RemoteObject id="ro" destination="flexService" result="resultHandler(event)"/>
</fx:Declarations>
<s:Label x="10" y="10" text="Employee Management" fontSize="24"/>
<s:TextInput x="10" y="53" width="322" id="nameText"/>
<s:Button x="340" y="53" label="Query" click="queryByName()"/>
<s:Button x="409" y="53" label="Create" click="preCreateEmployee()"/>
<s:Button x="481" y="53" label="Delete" click="deleteEmployee()"/>
<mx:DataGrid x="10" y="83" width="535" height="186" dataProvider="{employees}" id="employeeDataGrid">
<mx:columns>
<mx:DataGridColumn headerText="ID" dataField="id"/>
<mx:DataGridColumn headerText="Name" dataField="name"/>
<mx:DataGridColumn headerText="Title" dataField="title"/>
<mx:DataGridColumn headerText="Gender" dataField="gender"/>
<mx:DataGridColumn headerText="Birth" dataField="birth"/>
</mx:columns>
</mx:DataGrid>
<s:Panel x="128" y="160" width="298" height="191" title="Create New Employee" id="form_panel" visible="false">
<s:TextInput x="87" y="10" id="form_name"/>
<s:Label x="37" y="12" text="Name:"/>
<s:Label x="44" y="38" text="Title:"/>
<s:Label x="28" y="64" text="Gender:"/>
<s:Label x="43" y="90" text="Birth:"/>
<s:ComboBox x="87" y="36" id="form_title">
<s:dataProvider>
<mx:ArrayList>
<fx:String>CEO</fx:String>
<fx:String>Project Manager</fx:String>
<fx:String>Architect</fx:String>
<fx:String>Engineer</fx:String>
<fx:String>Designer</fx:String>
</mx:ArrayList>
</s:dataProvider>
</s:ComboBox>
<s:RadioButton x="86" y="62" label="Male" groupName="grp_gender" id="form_gender_male" value="true"/>
<s:RadioButton x="145" y="62" label="Female" groupName="grp_gender" id="form_gender_female" value="false"/>
<mx:DateField x="87" y="88" width="160" id="form_birth"/>
<s:Button x="87" y="118" label="Create" id="form_button_create" click="createEmployee()"/>
<s:Button x="159" y="118" label="Cancel" id="form_button_cancel" click="form_panel.visible=false"/>
</s:Panel>
</s:Application>
Employee.as
package org.expressme.employee.mgmt {
[RemoteClass(alias="org.expressme.employee.mgmt.Employee")]
[Bindable]
public class Employee {
public var birth : Date;
public var id : String;
public var name : String;
public var title : String;
public var gender : Boolean;
}
}
客户端实现有点小问题,就是每个ro事件处理都是resultHandler处理,导致增删操作后表格没数据显示。我也懒得改了,读者自己试试怎么实现……
分享到:
相关推荐
在这个项目中,MySQL存储和管理业务数据,与Hibernate协作,完成数据的增删改查操作。 整合这个工程,你需要: 1. 安装Eclipse IDE,并安装Flex Builder插件,以便在Eclipse中开发Flex应用。 2. 配置Blazeds,确保...
这样,Flex应用就可以调用后端的业务方法,处理数据的增删改查。 最后,完成Flex界面的设计,利用MXML和ActionScript来构建用户界面,与后台Java服务进行交互。通过BlazeDS,你可以实现实时数据同步,提供动态和...
例如,你可以创建一个`UserService`接口,包含增删改查等操作。 2. **服务实现**:实现Spring的服务接口,处理业务逻辑。你可以使用Spring的数据访问支持,如JDBC、Hibernate或MyBatis来操作数据库。 3. **Flex...
7. **编写Flex UI**:设计和实现Flex界面,通过RemoteObject调用Spring服务的方法,实现数据的增删改查。 8. **测试**:运行Flex客户端,确保与Spring服务端通信正常,业务逻辑执行正确。 以上就是Spring、...
6. 示例分析:“flex demo.xlsx”可能包含了实际的示例代码或者案例研究,展示了一个Flex应用如何调用Spring服务,完成数据的增删改查操作。通过阅读和理解这个Excel文件,开发者可以更直观地了解Flex与Spring整合的...
8. **测试与调试**:编写Flex前端的UI组件,通过HTTPService调用Spring服务,测试数据的增删改查功能,确保前后端交互正常。 9. **优化与扩展**:根据实际需求,可以进一步优化整合后的系统,例如添加缓存机制、...
7. **业务逻辑实现**:在Java后端编写业务逻辑,包括数据的增删改查、权限控制、工作流处理等。 8. **测试与部署**:完成编码后,进行单元测试和集成测试,确保各模块正常工作。最后,将项目部署到Tomcat服务器,...
在本项目中,Hibernate负责将后端的数据模型与数据库表进行映射,使得数据的增删改查操作变得简单。 在"Flex Spring Hibernate"项目中,开发者利用Flex Builder创建了一个简单的登录应用,该应用能够实现从前端到...
在这个项目中,Java用于编写业务逻辑和服务端处理,比如处理学生信息的增删改查操作,验证数据,以及与数据库的交互。Spring框架可以用于管理Java的bean,提供依赖注入,而Hibernate或MyBatis则可以作为持久层框架,...
书中不仅介绍了如何使用JDBCTemplate和hsqldb等技术访问数据库,还提供了完整的示例,如《Flex访问数据库》、《Flex之Hibernate》,演示了如何在Flex应用中实现数据的增删改查操作。更进一步,《Flex+Spring+...