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处理,导致增删操作后表格没数据显示。我也懒得改了,读者自己试试怎么实现……
分享到:
相关推荐
Umi-OCR-main.zip
基于springboot+Web的毕业设计选题系统源码数据库文档.zip
基于springboot校外兼职教师考勤管理系统源码数据库文档.zip
58商铺全新UI试客试用平台网站源码
基于springboot大学生就业信息管理系统源码数据库文档.zip
基于SpringBoot的口腔诊所系统源码数据库文档.zip
数据存放网盘,txt文件内包含下载链接及提取码,永久有效。失效会第一时间进行补充。样例数据及详细介绍参见文章:https://blog.csdn.net/T0620514/article/details/143956923
3-240P2162218.zip
网络安全 基于Qt创建的Linux系统下的浏览器.zip
C++ 类和对象:多态-练习题目2(制作咖啡和茶叶)
基于springboot+J2EE在线项目管理与任务分配中的应用源码数据库文档.zip
简介本项目提供了一个在51单片机上运行的简单操作系统,旨在帮助学习者深入理解操作系统的基本原理和任务调度机制。该操作系统通过汇编和C语言编写,实现了任务调度、中断处理等核心功能,并提供了详细的源代码和注释,方便学习和实践。
本文将深度卷积神经网络(CNN)设计实现一个复杂结构的生成模型,旨在通过多阶段的编码器-解码器结构,能够有效地将灰度图像转换为彩色图像。最后,本文将实现一个简单的Web应用,用户可以通过上传灰度图像,应用会使用预训练的Caffe模型对其进行颜色化,并将结果返回给用户。 1.模型设计:模型由多个卷积层、ReLU激活函数和批归一化层组成,通过前向传播函数将输入的灰度图像(L通道)转换为彩色图像(ab通道)。如果指定了 pretrained=True,则会自动下载并加载预训练的模型权重。 2. 系统通过Flask框架提供了一个Web应用,用户可以上传灰度图像,系统会自动将其转换为彩色图像,并在网页上显示结果。整个过程包括文件验证、图像处理、颜色化预测和结果展示,具有较高的实用性和用户体验。
一个JAVA图形化的、联网的五子棋游戏.zip javaweb
KWDB 是一款面向 【AIoT 场景】的【分布式多模数据库】,支持在同一实例同时建立时序库和关系库并融合处理多模数据,具备千万级设备接入、百万级数据秒级写入、亿级数据秒级读取等时序数据高效处理能力,具有稳定安全、高可用、易运维等特点。
页面数量:7页 网页主题:网站模板、酒店网站模板、官方网站模板 网页页面:首页、关于我们、相关服务、服务详情、在线博客、博客详情、在线留言 页面实现元素:加载动画、滚动加载、主题切换、导航栏 、轮播图、图文列表、图片切换、 文字列表、 按钮悬停、图片悬停、表单 实现技术:HTML、CSS 、JQuery 源码样式及js文件均分开存放,所有内容仅供初学者学习参考
内容概要:本文档提供了详细的 Neo4j 安装与配置指南,涵盖 Windows、Linux 和 Mac 系统的安装步骤。具体包括下载、安装、启动服务、修改配置文件(如端口配置、远程访问和内存限制)、设置管理员密码以及基本的 Cypher 查询语言使用方法。同时,还提供了一些常见问题及其解决方案。 适合人群:数据库管理员、软件开发人员、系统管理员。 使用场景及目标:①帮助初学者快速掌握 Neo4j 的安装与配置;②适用于需要搭建和使用图数据库的项目;③为已有用户解决常见问题。 其他说明:本文档不仅包含了基础的安装和配置流程,还提供了实际操作中可能遇到的问题及其解决方法,有助于提高使用者的实际操作能力。
基于SpringBoot+Vue的软件产品展示销售系统源码数据库文档.zip
《书戴嵩画牛》教学课件.pptx
20届智能车 【项目资源】:包含前端、后端、移动开发、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源,毕业设计等各种技术项目的源码。包括C++、Java、python、web、C#、EDA等项目的源码。 【适用人群】:适用于希望学习不同技术领域的初学者或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。