gpt4 book ai didi

java - GWT Java如何将List转换为客户端可以使用的东西?

转载 作者:行者123 更新时间:2023-12-01 12:17:55 24 4
gpt4 key购买 nike

已编辑

这可能是一个愚蠢的问题,但我无法弄清楚。我在 Eclipse 中使用 Java 和 GWT 创建一个 RPC 应用程序来获取 google 驱动器元数据。一切正常(我正在服务器端取回元数据),但我不知道如何将此数据传递到客户端以便我可以显示它。

我正在获取 Google 云端硬盘文档的元数据列表,如下所示:

public List<File> getFromRemoteServer()
throws HowToListingException {

List<File> lista = null;

try {
lista = retrieveAllFiles(getDriveService("email@xxxx.org"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (GeneralSecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return lista;

}

我的问题是,如何将 List 类型更改为客户端可以使用的类型?即我在这里放什么(填空)?我如何将 lista 转换为该类型?

    asyncSvc.getFromRemoteServer( {
new AsyncCallback<____________>() {
}

更有希望澄清信息:

我知道要完成这项工作,我必须序列化 File 对象。我只是不确定我是否可以或者把它放在哪里。 http://www.gwtproject.org/doc/latest/tutorial/RPC.html#serialize

在服务器端实现中,我使用这个文件:

导入 com.google.api.services.drive.model.File;

我需要使用它才能使此代码正常工作:

public static Drive getDriveService(String userEmail) throws GeneralSecurityException,
IOException, URISyntaxException {

HttpTransport httpTransport = new NetHttpTransport();
JacksonFactory jsonFactory = new JacksonFactory();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(Arrays.asList(DriveScopes.DRIVE))
.setServiceAccountUser(userEmail)
.setServiceAccountPrivateKeyFromP12File(
new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
.build();
Drive service = new Drive.Builder(httpTransport, jsonFactory, null)
.setHttpRequestInitializer(credential).build();
return service;
}

private static List<File> retrieveAllFiles(Drive service) throws IOException {

List<File> result = new ArrayList<File>();
Files.List request = null;
try {
request = service.files().list();
FileList files = request.setQ("'"+"0B9lpwZZfxxxxxxxxVeEJFR3M"+"' in parents and trashed=false").execute();
result.addAll(files.getItems());
request.setPageToken(files.getNextPageToken());
}
catch (IOException e)
{
System.out.println("An error occurred: " + e);
request.setPageToken(null);
}

for(File f:result)
{
System.out.println(f.getTitle());
System.out.println(f.getOwners());
System.out.println(f.getModifiedDate());

}
return result;
}

当我尝试使用时出现问题

import com.google.api.services.drive.model.File;

在客户端的同步和异步接口(interface)以及客户端代码(入口点)。我收到有关“您是否忘记继承所需模块 - 未找到此导入的代码”的错误消息。我假设这意味着我不能在客户端使用它。我尝试导入 java.io.File 但随后收到消息称无法在两种类型之间进行转换。

我觉得我已经很接近了,我只需要朝着正确的方向插入。任何帮助表示赞赏。

最佳答案

您只能传递实现可序列化的类。我不知道什么File类是,但如果它不可序列化,则无法使用 RPC 传递它。

如果File实现了Serialized,可以通过ArrayList<File>到 AsyncCallback。请注意,对于 GWT,为了减少编译代码,最好使用特定的实现(ArrayList 而不是 List)。

关于java - GWT Java如何将List<File>转换为客户端可以使用的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26874716/

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