【问题标题】:instead of arrayCollection而不是 arrayCollection
【发布时间】:2011-05-11 06:49:50
【问题描述】:

我的弹性代码是:

<fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.controls.Alert;
            import mx.rpc.AsyncToken;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;

            public function get_user():void
            {
                var token:AsyncToken = ro.getOperation('getUser').send();
                user_grid.dataProvider = token.toString();
                Alert.show(user_grid.dataProvider.toString());
            }
            private function fault(e:FaultEvent):void
            {
                Alert.show("code:\n" + e.fault.faultCode  + "\n\nMessage:\n" + e.fault.faultString + "\n\nDetail:\n" + e.fault.faultDetail);
            }
            private function result(e:ResultEvent):void
            {
                userbtn.visible = false;
                lnkbtn.visible = true;
            }
        ]]>
    </fx:Script>

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
        <s:RemoteObject id="ro"
                        source="com.freelancer.GetUser"
                        fault="fault(event)"
                        destination="BlazeDsService">
            <s:method name="getUser"
                      result="result(event)"/>
        </s:RemoteObject>
    </fx:Declarations>

        <mx:DataGrid id="user_grid" x="-1" y="-1" width="705" height="356">
            <mx:columns>
                <mx:DataGridColumn headerText="Id" dataField="id"/>
                <mx:DataGridColumn headerText="Name" dataField="name"/>
                <mx:DataGridColumn headerText="Password" dataField="pwd"/>
            </mx:columns>
        </mx:DataGrid>      

    <s:Button x="322" y="429" id="userbtn" label="Get User" width="98" 
              height="23" cornerRadius="10" click="get_user()"/>
    <mx:LinkButton x="331" y="429" id="lnkbtn" visible="false" label="Connected Please Wait Loading . . ."/>

我的java代码是:

public class GetUser
{
    public static void main(String[] argv) 
    {
        System.out.println("-------- PostgreSQL " +
                "JDBC Connection Testing ----------");
        getUser();
    }
    public static List<User> getUser()
    {
         List<User> ls=new ArrayList<User>();   
         String host = "test";
            String port = "1234";
            String dbName = "test";
        Connection connection = null;
        try 
        {
            connection = DriverManager.getConnection(
                    "jdbc:postgresql://" + host + ":" + port + "/" + dbName,"user", "user");

            System.out.println("Database is connected");    

         String strSQL = "select * from test";
         Statement st = connection.createStatement();
         ResultSet rs=st.executeQuery(strSQL);
         System.out.println("hi,query executed");
         while(rs.next())
         {
             User user = new User();
             user.setId(rs.getInt("id"));
             user.setName(rs.getString("name"));
             user.setPwd(rs.getString("pwd"));
             ls.add(user);
         }
        }
        catch(Exception e)
        {
            System.out.println();
        }
        finally
        {
            try
            {
                connection.close();
            }
            catch (Exception ignored) 
            {

            }
        }
         return ls;
    }
}

如果有人知道解决方案,请帮助我。

【问题讨论】:

  • 我已将您的两个帐户合并在一起。 Please read this Faq entry about cookie-based accounts. 另外,StackOverflow 不是论坛;如果您有新问题,请提出新问题。如果您想在问题中包含更多信息,请edit it。如果您想与其中一位已回答的人互动,可以给他们留言。

标签: java apache-flex flex4 blazeds


【解决方案1】:

请记住,对 RPC 服务的调用是异步的。

首先你调用远程函数getUser。这个请求被发送到服务器,getOperation 函数立即返回。此调用的结果是一个AsyncToken 对象,它不是getUser 调用的结果。令牌是Asynchronous Completion Token design pattern 的一部分。 在 RPC 函数返回后,您的客户端将在结果处理程序中获得响应,这是您声明的 result 函数。结果是ResultEvent 参数的一部分。

所以以下应该可以工作:

    public function get_user():void
    {
        var token:AsyncToken = ro.getOperation('getUser').send();
    }

    private function result(e:ResultEvent):void
    {
        user_grid.dataProvider = e.result;     
        userbtn.visible = false;
        lnkbtn.visible = true;
    }

【讨论】:

  • 非常感谢。我得到了一些与异步调用相关的信息。但我的问题仍然没有解决。我按照你的步骤现在它没有检索任何显示空白网格的东西。我的代码中是否有任何错误。请让我知道。我正在努力解决这个问题。提前致谢,拉维
  • 您不能指望我们为您解决所有问题。使用调试器,检查您是否收到任何数据,以及数据是否已正确添加到网格等...
猜你喜欢
  • 1970-01-01
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 2016-12-13
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
相关资源
最近更新 更多