日期:2014-05-20  浏览次数:20748 次

flex和java交互的问题
在java的servlet里 request.setAttribute("name","小王");

在flex的mxml里如何取得name的值?
请赐教!!!

------解决方案--------------------
没有办法通过你这种方式传送

目前只能由以下2个方式

socket



webservice
------解决方案--------------------
Flex有三种方法可以和服务器联系
1 HTTPService,普通的POST或GET方式。在你的例子里想和Servlet对话用这种模式比较好
2 WebService 用SOAP和WebService从服务器端得到XML。普通的WebService用法
3 RemoteObjects 可以从服务器端获得封装好的JavaBean,在客户端会被自动封装到一个属性相同的ActionScript Bean里。需要额外的支持来实现,Adobe的LCDS(LifeCycle Data Services)是一个比较好的选择,极其强大而且很方便。另外ColdFusion也可以,不过没有LCDS好。

回答你的问题,下面的代码是类似login的一个功能,在页面完全渲染完之后,creationComplete就会执行callServlet这个方法来跟你的Servlet取得联系。里面mx:HttpService这个组件可以当做一个数据源使用,你既可以直接用Grid列出结果,也可以建立一个方法来处理获得的数据, 

<mx:HttpService ..... result="loginUser(event);"... > 和与之对应的

private function loginUser(event:ResultEvent):void{}就是干这个调调的

XML code

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns="*" creationComplete="callServlet()">
    <mx:Script>
        <![CDATA[
            private function callServlet():void {
                userRequest.send();
            }
        ]]>
    </mx:Script>

<mx:HTTPService id="userRequest" url="http://localhost/myproj/myservlet" useProxy="false" method="POST">
        <mx:request xmlns="">
            <username>{username.text}</username>
            <emailaddress>{emailaddress.text}</emailaddress>
        </mx:request>
    </mx:HTTPService>

</mx:Application>