flex 权限控制

最近在看 <Flex企业开发应用实战>,前面就讲到了如何在flex中做权限控制,在此记录一下。

权限控制

在Flex中,所有的ActionScript类可以根据是否可视分为两类:可视化组件和不可视组件。可视化组件都从mx.core.UICmponent继承,用于完成与用户的交互,不可视组件主要用来完成一些与人机交互无关的工作,大多数与数据处理相关,比如数据校验、格式化、远程数据访问等。

不可视化组件实现mx.core.IMXMLObject接口,就可以当成可视化组件解析,要求实现该接口的initialized(document:Object, id:String):void方法。

权限控制:

在Flex中定义一个Action组件,在通用框架与具体人机界面的UI组件之间建立起一种隔离,使得通用框架不再控制具体的UI组件,而只是控制Action的属性。UI组件只需要将自身属性(一般是enabled属性和visible属性)与Action组件对应的属性绑定即可。

下面是实现代码:

package com.action.right.control

{

import mx.core.IMXMLObject;

[Bindable]

public class Action implements IMXMLObject

{

private var _id:String;

private var _document:Object;

//此处实现了IMXMLObject接口的initialized方法

public function initialized(document:Object, id:String):void

{

this._id = id;

this._document = document;

}

public function get id():String

{

return _id;

}

public function get document():Object

{

return _document;

}

public var operationCode:String;//用来对应权限中的操作代码

public var caption:String;//给绑定控件提供文字标签

public var visible:Boolean = true;//给绑定控件提供visible属性

public var enabled:Boolean = true;//给绑定控件提供enabled属性

public var checked:Boolean = true;//给绑定控件提供checked属性

}

}

再提供一个专门存储Action组件的ArrayCollection派生类UIActions,如下所示:

package com.action.right.control

{

import mx.collections.ArrayCollection;

[Bindable]

//Inspectable元数据标签告诉编译器不允许把非com.action.right.control.Action类型的对象添加到UIActions中

[Inspectable(arrayType="com.action.right.control.Action")]

public class UIActions extends ArrayCollection

{

}

}

下面是使用代码:

<?xml version="1.0" encoding="utf-8"?>

<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009"

  xmlns:s="library://ns.adobe.com/flex/spark"

  xmlns:mx="library://ns.adobe.com/flex/mx"

  xmlns:control="com.action.right.control.*"

  creationComplete="init(event)">

<fx:Declarations>

<!-- 将非可视元素(例如服务、值对象)放在此处 -->

<control:UIActions id="actions">

<control:Action id="action_stat" caption="统计报表" enabled="false" operationCode="stat"/>

<control:Action id="action_issue" caption="发布报表" enabled="false" operationCode="issue"/>

</control:UIActions>

</fx:Declarations>

<fx:Script>

<![CDATA[

import mx.events.FlexEvent;

private function init(event:FlexEvent):void

{

//functionGrantInfo是权限控制组件

//向权限控制组件中注入受限的动作集合,以使权限系统可以控制界面上哪些能够工作,哪些不能工作

functionGrantInfo.registerUIActions(this.actions);

}

]]>

</fx:Script>

<s:Button x="58" y="68" label="发布报表" enabled="{action_stat.enabled}"/>

<s:Button x="189" y="68" label="统计报表" enabled="{action_issue.enabled}"/>

</s:Module>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值