flex1.5 学习笔记 1

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

对于flex 的学习个人觉得主要 在于两个方面,一是 flex 丰富的标记库,能够轻松构造功能丰富的用户界面;另一方面,就是要学习flex 作为web app的表现层怎样和 多层应用中的 其他基层来通信。

flex 调用server JVM中的 javaBean 初步:

背景:

flex 可以通过三种方法来 使用 data service :一是 Web Service, 二是 Remote object service ,三是 http service, web service 只知道个大概,没有部署过,http service 觉得在一般的 三层应用中用的不多,就先研究了一下 Remote object service 。 Remote object service 说白了就是 flex 与 服务器端一般java 对象的交互,这些java对象 可以是 pojo(plain old java object)或者是 javabean 等任何没有被部署为 web service的对象。

标记:

在flex 中要使用remote java object 则通过使用 标记 <mx:RemoteObject .....> 来标识

RemoteObject 可以分为两类,named 和 unnamed , 这两个的区分在标记上的区别就是 <mx:RemoteObject named = "...."> 如果有named(这个是用来告诉flex 调用java 对象是哪个类的) 这个属性则这个RemoteObject是named的 。而如果没有named属性,那么必须要象<mx:RemoteObject source= "....">一样有source属性(source = Package.ClassName 这个类是在flex 能找到的classpath下的 全限定名 如果在用的是tomcat 的话 这个classpath 就是..\WEB-INF\classes 目录)。这两种用法在使用实质上有什么不同还不是很清楚,先不深究,继续往下看。

调用:

flex 与java object的通信就是 调用 java 对象的方法,这就涉及到参数怎么传递的问题了,flex中调用 java 对象的函数 传递参数有两种方法:1。显式 参数传递 就是象平时写java 代码一样把 参数写在函数的 参数列表中,看一个例子:

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

<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">

<mx:Panel>

<mx:Label text="Msg: " />

<mx:TextInput text="" id="msg" />

<mx:Button label="Ok" click="data.setMsg(msg.text) "/>

</mx:Panel>

<mx:RemoteObject id="data" source="dataSourceExample"> </mx:RemoteObject>

</mx:Application>

当然 dataSourceExample 这个类的定义是:

public class dataSourceExample

{

private String msg;

public void setMsg(String msg)

{

this.msg = msg;

show();

}

public String getMsg()

{

return msg;

}

public void show()

{

System.out.println(msg);

}

}

最后一步:

这样flex 和java 类都写好了,就是运行了,但是还有一点要配置以下,就是要对..\WEB-INF\flex目录下的flex-config.xml配置一下

<remote-objects>

........

<whitelist>

<!-- whitelist config for unnamed objects -->

<unnamed>

<source>samples.*</source>

<source>samples</source>

<source>*</source>

<!--

Uncomment the source element below to enable access to all classes

during development.

We strongly recommend not allowing access to all source files

in production, since this exposes Java and Flex system classes.

<source>*</source>

-->

</unnamed>

<!-- whitelist config for named objects -->

<named>

<object name="SampleEmployeeRO">

<source>samples.explorer.EmployeeManager</source>

<type>stateful-class</type>

<allow-unnamed-access>true</allow-unnamed-access>

</object>

</named>

</whitelist>

</remote-objects>

刚刚说了 这个RemoteObject 中没有named属性, 那么这个是 unnamed 的RemoteObject 所以要在 remote-objects 下的whitelist 下的 unnamed 下 加一个<source>*</source> 以使classes 下的所有的class都能被访问。

运行:

在输入框中 输入后点击OK 后能在tomcat 终端看到传来的msg 被输出了。

另外一种传参方法:

除了以上显式传参,还可以用参数邦定的方法(argument binding): 在上面的 mxml代码的RemoteObject标记要改成:

<mx:RemoteObject id="data" source="dataSourceExample">

<mx:method name="setMsg">

<mx:arguments>

<arg1>{msg.text}</arg1>

</mx:arguments>

</mx:method>

</mx:RemoteObject>

代码意思显而易见,不多加解释了,在调用方法的地方 button的click事件 改为:click="data.setMsg.send()"

send方法一被调用 参数就被传到setMsg 方法中了

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航