gpt4 book ai didi

java - 而不是数组集合

转载 作者:行者123 更新时间:2023-12-01 15:51:22 25 4
gpt4 key购买 nike

我正在尝试使用 BlazeDs 将值从 java 返回到 Flex 前端。成功地 blazeds 正在连接,同时检索它显示的值 [object Asynvtoken] 没有从 java 方法获取值。

我的弹性代码是:

<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;
}
}

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

最佳答案

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

首先调用远程函数getUser。该请求被发送到服务器,getOperation 函数立即返回。此调用的结果是一个 AsyncToken 对象,它不是调用 getUser 的结果。该 token 是 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;
}

关于java - 而不是数组集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5960343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com