首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

flex 施用SharedObject保存信息的一种方式

2012-11-25 
flex 运用SharedObject保存信息的一种方式/** * F5 刷新时,解决用户信息丢失,重新登录的一种处理方式, *

flex 运用SharedObject保存信息的一种方式
/**
* F5 刷新时,解决用户信息丢失,重新登录的一种处理方式,
* 问题时系统非正常退出时,信息如何清除 又是一个问题,
* @date 2010/11/01
* @author feiying
*/
public function SessionHandler()
{
registerClassAlias("*.*.UserVO",UserVO);
lso = SharedObject.getLocal(localsoId);//不存在会默认创建
}

private static const localsoId:String = "userInfo_persistence_Id";
private static var key:String = "userInfo";
private static var lso : SharedObject;
private static var uservo:UserVO = null;

/**
* 通过lso判断用户是否已登录
* 已登录,界面刷新时,从lso获取用户信息
* 未登录,进入登录界面
*/
public static function isUserLogin():Boolean{
lso = SharedObject.getLocal(localsoId);
var user:Object = lso.data[key];// as UserVO;
if(!user||user.username=="") return false;

//return true;
return GlobalShare.saveUserInfo;
}
/**
* 从lso获取用户信息保存在会话中
*/
public static function getUserInfo():void{
lso = SharedObject.getLocal(localsoId);
var user:Object = lso.data[key];// as UserVO;
if(!user) return;
User.userName = user.username;
User.userRole = user.role;
User.userStation = user.site;
User.userDepart = user.dept;
}
/**
* 保存用户信息
*/
public static function save():void{
if(!GlobalShare.saveUserInfo)
return;
setUserInfo();
/* if(!uservo){
return;
} */
if(!lso) lso = SharedObject.getLocal(localsoId);
//select.username;
Alert_1.show_debugInfo("key="+key+"\nselect="+uservo.toString());

lso.data[key] = uservo;
var flushStatus:String = null;
try{
flushStatus = lso.flush();
}
catch( error : Error ) {
Alert.show("不能保存信息到本地硬盘上");
}
if ( flushStatus != null ){
switch( flushStatus ){
case SharedObjectFlushStatus.PENDING:
lso.addEventListener(NetStatusEvent.NET_STATUS,onFlushStatus);
break;
case SharedObjectFlushStatus.FLUSHED:
Alert_1.show_debugInfo("用户数据已保存");
break;
}
}
}
private static function setUserInfo():void{
uservo = new UserVO();
uservo.username = User.userName;
uservo.role = User.userRole;
uservo.site = User.userStation;
uservo.dept = User.userDepart;
}
private static function onFlushStatus(event:NetStatusEvent):void{
switch (event.info.code){
case "SharedObject.Flush.Success":
Alert.show("数据保存成功");
break;
case "SharedObject.Flush.Failed":
Alert.show("数据保存失败");
break;
}
lso.removeEventListener(NetStatusEvent.NET_STATUS,onFlushStatus);
}
/**
* 删除用户信息
*/
public static function clear():void{
lso = SharedObject.getLocal(localsoId);
delete lso.data[key];
}

/**
* 获取用户信息
*/
public static function retrieve(user:User):XML{
lso = SharedObject.getLocal(localsoId);
//var key:String = userName+"/"+tableName;
if(lso.data[key] != undefined){
Alert_1.show_debugInfo("key="+key+"\nselect="+lso.data[key].toString());
var username:String = lso.data[key].username;
//var table:String = lso.data[key].tableName;
if(username == User.userName)
return lso.data[key] as XML;
}else{
Alert.show("当前用户暂无数据保存");
}

return <user/>;
}
}

热点排行