`
Lianzhong.Huang
  • 浏览: 10810 次
  • 性别: Icon_minigender_1
  • 来自: 云南
最近访客 更多访客>>
社区版块
存档分类
最新评论

仿照Flexstroe3写的一个员工管理应用 (三)

    博客分类:
  • Flex
阅读更多

 本篇的主要包括两部分内容。     1. 服务器端的文件结构及基础代码。      2. 实现员工信息的保存。  

 知识点:

      1. 与java端交互

      2. flex上传图像

      3. 自定义事件

      4. 验证表单

      5. 基本的动画效果

 

 

一、 服务器端的文件结构及基础代码

    1. 文件结构说明。



  2. web.xml
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>
		
    <listener>
        <listener-class>flex.messaging.HttpFlexSession</listener-class>
    </listener>

    <servlet>
        <servlet-name>MessageBrokerServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	    <init-param>
	        <param-name>contextConfigLocation</param-name>
	        <param-value>classpath:applicationContext.xml</param-value>
	    </init-param>
	    <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>MessageBrokerServlet</servlet-name>
        <url-pattern>/messagebroker/*</url-pattern>
    </servlet-mapping>
 

  3. 定义员工持久化对象Employee,需要特别留意的是headtraid采用了byte[]类型,数据库中存放的类型为longblob。
	/**
	 * 头像
	 */
	private byte[] headtraid;
 
  4. 编写EmployeeManager,使之继承SuperEntityManager,这样便具备了增删改的功能,写一个查找方法findEmployees。
/**
 * 员工信息管理
 * @author 黄连忠
 */
@Service("employeeManager")
@Component
@RemotingDestination(channels={"my-amf","my-secure-amf"})
public class EmployeeManager extends SuperEntityManager {
	
	/**
	 * 根据查询条件查询出员工
	 * @param condition
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List<Employee> findEmployees(String condition) {
		Criteria c = superDao.createCriteria(Employee.class);
		c.add(Restrictions.eq("deleted", false));
		if (StringUtil.isNotNull(condition)){
			c.add(Restrictions.like("name", "%"+condition+"%"));
		}
		c.addOrder(Order.asc("name"));
		return c.list();
	}
	
}
 
二、Flex端
  1. 首先用Po2FlexVoUtil工具类生成对应SuperEntity.as和Employee.as,放到对应的文件夹下。

  2. 切换到Flash透视图,新建一个名为views.personnel的包。在其在下面建一个名为BasicInfo的NavigatorContent组件。具体内容请参照附件。
  3.  来看看泰头像处理这部分。首先定义一个id为headtrait的Image,将其source绑定到类型为ByteArray的headtraid,当图像传到浏览器后便会将其显示为图片。
<mx:Image id="headtrait" source="{employee.headtraid}" width="150" height="155"/>


<s:Button label="选择头像" id="btnSelectImage" click="selectImage()"/>
private function selectImage():void {
	var arr:Array = [];
	arr.push(new FileFilter("图像", ".gif;*.jpeg;*.jpg;*.png"));
	fileReference.browse(arr);
}
private function fileReference_select(evt:Event):void {
	fileReference.load();
}
			
private function fileReference_complete(evt:Event):void {
	headtrait.source = fileReference.data;
}
 
在非可视元素中定义一个<net:FileReference id="fileReference"   select="fileReference_select(event);"   complete="fileReference_complete(event);" />

  4. 验证表单。将FormItem中的required属性置为true, 使其在界面中显示红色的*。在非可视元素中定义一个StringValidator。并且在整个组件的creationComplete事件中,将validate_ename加入到事先定义的validatorArr数组当中(/commonAs/validate.as文件)。  在需要验证的时候调用validateForm()函数即可。
<mx:StringValidator id="validate_ename" source="{ename}" property="text" required="true" requiredFieldError="员工姓名不能为空!" />
if (validateForm()){
	Alert.show("您确定要执行更新操作吗?", "提示信息", Alert.YES|Alert.NO, this, function(evt:CloseEvent):void{
		if (evt.detail==Alert.YES){
						
		}
	});
}
  



5. 调用java端方法。在非可视元素中声明一个RemoteObject.
<s:RemoteObject id="employeeManager" destination="employeeManager"
showBusyCursor="true" fault="faultHandler(event)">
<s:method name="add" result="onAdd(event)"/>
<s:method name="update" result="onUpdate(event)"/>
</s:RemoteObject>

直接使用java端的方法即可。
protected function doAdd(event:MouseEvent):void{
	if (validateForm()){
		Alert.show("您确定要添加员工吗?", "提示信息", Alert.YES|Alert.NO, this, function(evt:CloseEvent):void{
			if (evt.detail==Alert.YES){
				var tempEmployee:Employee = new Employee();
				tempEmployee.name = ename.text;
				tempEmployee.gender = rgGender.selectedValue as String;
				tempEmployee.birthday = birthday.selectedDate;
				tempEmployee.nativeplace = nativeplace.text;
				tempEmployee.joinDate = joinDate.selectedDate;
				tempEmployee.leaveDate = leaveDate.selectedDate;
				tempEmployee.headtraid = headtrait.source as ByteArray;
				
				tempEmployee.descn = descn.text;
				tempEmployee.htmlDescn = descn.htmlText;
				employeeManager.add(tempEmployee);
			}
		});
	}
}
 
6. 自定义事件。新建一个名为EmployeeThumbEvent的自定义Event,放在lzh.icecream.personnel.event包下面,供以后用。具体内容请参照附件。
protected function onAdd(event:ResultEvent):void{
	employee = event.result as Employee;
	dispatchEvent(new EmployeeThumbEvent(EmployeeThumbEvent.ADD_EMPLOYEE, employee));
}
  <fx:Metadata>
[Event(name="addEmployee", type="lzh.icecream.personnel.event.EmployeeThumbEvent")]
[Event(name="updateEmployee", type="lzh.icecream.personnel.event.EmployeeThumbEvent")]
</fx:Metadata>

7. 基本的动画效果。在employee值发生变化时,让头像围绕Y轴转360度。
public function set employee(employee:Employee):void{
	this._employee = ObjectUtil.copy(employee) as Employee;
	
	
	var rotate3D:Rotate3D = new Rotate3D();
	rotate3D.angleXFrom = 0; rotate3D.angleXTo = 0;
	rotate3D.angleYFrom = 0; rotate3D.angleYTo = 360;
	rotate3D.angleZFrom = 0; rotate3D.angleZTo = 0;
	rotate3D.autoCenterTransform = true;
	rotate3D.autoCenterProjection = true;
	
	rotate3D.target = headtrait;
	rotate3D.play();
}
 
8. 对主应用程序icecream.mxml做简单的修改。加入自定义组件<personnel:BasicInfo />。创建好数据库之后,启动tomcat,试着添加一条数据,然后到数据库看看。
分享到:
评论

相关推荐

    仿照Flexstroe3写的一个员工管理应用 (二)

    【标题】:“仿照Flexstroe3写的一个员工管理应用(二)” 在这个主题中,我们探讨的是如何基于Flexstore3的设计模式构建一个员工管理应用的第二个部分。Flexstore3是一个用于数据存储和管理的框架,它在JavaScript...

    仿照Flexstroe3写的一个员工管理应用 (四)

    【标题】"仿照Flexstroe3写的一个员工管理应用 (四)" 涉及的知识点主要集中在软件开发和编程领域,特别是针对Flexstore3的仿写过程,这是一个用于数据存储和管理的应用。Flexstore3是基于Flex技术构建的,而Flex是...

    仿照windows记事本写的一个小程序

    【描述】: "仿照Windows记事本的小程序是一个适合初学者实践的项目,它将帮助你掌握基础编程技巧。在这个过程中,你会遇到如何创建一个简单的图形用户界面(GUI),处理用户输入,读写文件,以及实现文本编辑功能的...

    仿照内核makefile写的一个测试小工程

    在“仿照内核makefile写的一个测试小工程”中,我们可以找到一些关键的元素和概念: 1. **目标与依赖关系**:在Makefile中,每个目标(target)都有一个或多个依赖文件(dependency)。当依赖文件改变时,Makefile...

    仿照淘宝做的一个ASP电子商务网站

    本项目“仿照淘宝做的一个ASP电子商务网站”旨在提供一个基于B2B(Business-to-Business)模式的在线交易平台。在ASP(Active Server Pages)技术的支持下,该网站实现了诸如商品浏览、购物车、订单处理、用户管理等...

    仿照wireshark写的一个网络流量监测应用,前端用的pyqt,界面还蛮好看的,具体

    仿照wireshark写的一个网络流量监测应用,前端用的pyqt,界面还蛮好看的,具体功能包括抓包,_Network-monitoring

    仿照MyBatis手写一个持久层框架对应源码

    仿照MyBatis手写一个持久层框架对应源码,适用于文档学习下载使用

    仿照知乎做的一个Java web项目,是一个sns+资讯的web应用。.zip

    仿照知乎做的一个Java web项目,是一个sns+资讯的web应用。使用SpringBoot+Mybatis+velocity开发。数据库使用了redis和mysql,同时加入了异步消息等进阶功能,同时使用python爬虫进行数据填充。 软件开发设计:应用...

    vue仿支付宝拖拽添加删除.zip

    3. **删除应用**:删除操作通常涉及一个移除元素的过程。在Vue中,可以使用`v-if`或`v-show`指令根据数据模型的状态决定某个应用组件是否显示。当用户选择删除某个应用时,对应的模型数据会被移除,从而导致该应用...

    仿照知乎做的一个Java web项目,是一个sns+资讯的web应用。

    仿照知乎做的一个Java web项目,是一个sns+资讯的web应用。使用SpringBoot+Mybatis+velocity开发。数据库使用了redis和mysql,同时加入了异步消息等进阶功能,同时使用python爬虫进行数据填充。 适合学习/练手、毕业...

    仿照微信界面写的app

    【标题】"仿照微信界面写的app"是一个项目,旨在创建一个与微信用户界面高度相似的应用程序。这个项目的核心目标是复制微信的90%的UI设计,为开发者提供一个研究和学习移动应用界面设计的实例。 【描述】中提到,这...

    员工绩效考核系统,分为三个等级,管理员,一般员工,领导

    分为三个级别:管理员,普通员工,公司领导,数据库放在App_Data下,附加即可,可在VS2005和VS2008下运行,数据库用的SQl+2005,文档很详细,可以用作毕业设计,也可以仿照本系统自己动手开发一个,如此详细的文档,...

    任务管理器自己仿照windows任务管理器做的程序管理器

    3. **应用详细信息**:为用户提供每个应用程序的详细信息,例如进程的启动时间、文件路径、关联的用户账户等。 4. **启动管理**:允许用户查看和管理启动时自动运行的程序,可以禁用不需要的启动项,以提高系统启动...

    使用c++基于Qt框架开发的任务管理器,UI仿照win10.zip

    使用c++基于Qt框架开发的任务管理器,UI仿照win10.zip 使用c++基于Qt框架开发的任务管理器,UI仿照win10.zip 使用c++基于Qt框架开发的任务管理器,UI仿照win10.zip 使用c++基于Qt框架开发的任务管理器,UI仿照win10....

    android 仿京东收货地址 三级联动

    在Android开发中,"三级联动"通常指的是在一个界面中,有三个互相关联的下拉选择框,它们的数据层级关系通常是省-市-区,比如在创建收货地址时的省份、城市和区域的选择。京东收货地址的实现方式是用户在选择一个省...

    直播课堂管理系统(MySQL+JavaWeb).zip

    直播课堂管理系统是一个基于MySQL数据库和JavaWeb技术构建的教育平台,用于实现在线教学的管理和交互。这个系统的主要功能包括课程管理、用户管理、查询操作、数据的增删改查等,旨在提供一个高效、便捷的教学环境。...

    c++版本libevent,仿照libevent写的一个服务器框架

    c++版本libevent,仿照libevent写的一个服务器框架,libevent的基本功能已实现,暂时不能在windows平台上使用,定时器是纯粹的timer wheel方式,与libevent的小根堆不一样,而且最大定时时间是固定的,暂时不支持...

    仿照github实现客户端

    总之,"仿照github实现客户端"项目展示了如何在Android平台上使用MVP模式和各种开源库来构建一个功能丰富的第三方GitHub客户端应用,涉及到网络请求、数据处理、UI设计等多个方面的技术知识。开发者在实现过程中不仅...

    仿照知乎做的一个Java web项目

    【标题】"仿照知乎做的一个Java web项目"与【描述】中的"python项目"存在不一致,这可能是因为信息提供有误。但从标题来看,我们可以聚焦于Java Web项目的相关知识点。 Java Web项目通常指的是使用Java语言开发的、...

Global site tag (gtag.js) - Google Analytics