如何与GWT进行交互 - Spring RestTemplate

时间:2012-10-26 07:34:45

标签: spring gwt resttemplate gwt-compiler

这是issue

的延续

我目前正在处理GWTRestfulSpring Framework环境的任务。

它有两个应用程序; 应用程序#1 通过Restful Webservice和 Application#2 公开一些信息,这些信息使用该服务并在GWT中显示这些详细信息。

对于应用程序#2,我使用Spring RestTemplate来使用Restful Webservice并通过接口返回详细信息列表。在GWT结束时,有一些DataListProviderGWT-DataGrid中设置数据列表。

现在的问题是,我不知道如何与我的GWT DataListProvider类进行DetailService的互动(这会返回 List<Details> 方法)。当我在GWT- OnModule()方法中直接调用服务类时,在GWT Compile期间,我面临一些未解决的类型错误,因为此类间接调用Spring Libraries类因此GWT无法编译。

com.google.gwt.dev.jjs.InternalCompilerException: Failed to get JNode
    at com.google.gwt.dev.jjs.impl.TypeMap.get(TypeMap.java:140)
    at com.google.gwt.dev.jjs.impl.TypeMap.get(TypeMap.java:71)
    at com.google.gwt.dev.jjs.impl.BuildTypeMap.getType(BuildTypeMap.java:730)
    at com.google.gwt.dev.jjs.impl.BuildTypeMap.createField(BuildTypeMap.java:570)
    at com.google.gwt.dev.jjs.impl.BuildTypeMap.access$300(BuildTypeMap.java:99)
    at com.google.gwt.dev.jjs.impl.BuildTypeMap$BuildDeclMapVisitor.visit(BuildTypeMap.java:180)
    at org.eclipse.jdt.internal.compiler.ast.FieldDeclaration.traverse(FieldDeclaration.java:285)
    at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1232)
    at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.traverse(CompilationUnitDeclaration.java:687)
    at com.google.gwt.dev.jjs.impl.BuildTypeMap.createPeersForNonTypeDecls(BuildTypeMap.java:637)
    at com.google.gwt.dev.jjs.impl.BuildTypeMap.exec(BuildTypeMap.java:514)
    at com.google.gwt.dev.jjs.impl.BuildTypeMap.exec(BuildTypeMap.java:523)
    at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.precompile(JavaToJavaScriptCompiler.java:599)
    at com.google.gwt.dev.jjs.JavaScriptCompiler.precompile(JavaScriptCompiler.java:33)
    at com.google.gwt.dev.Precompile.precompile(Precompile.java:284)
    at com.google.gwt.dev.Precompile.precompile(Precompile.java:233)
    at com.google.gwt.dev.Precompile.precompile(Precompile.java:145)
    at com.google.gwt.dev.Compiler.run(Compiler.java:232)
    at com.google.gwt.dev.Compiler.run(Compiler.java:198)
    at com.google.gwt.dev.Compiler$1.run(Compiler.java:170)
    at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:88)
    at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:82)
    at com.google.gwt.dev.Compiler.main(Compiler.java:177)
      [ERROR] <no source info>: public class org.springframework.web.client.RestTemplate
    extends org.springframework.http.client.support.InterceptingHttpAccessor
    implements : Unresolved type org.springframework.web.client.RestOperations

请提供您的建议如何在这些服务类和GWT之间进行交互。

1 个答案:

答案 0 :(得分:0)

你不能在客户端代码中使用Spring。

可用选项包括:

演示者中的回调,其中异步接口对服务控制器(在App#2的服务器端)进行GWT-RPC调用。您可以使用@RequestMapping带注释的方法,其内部使用RestTemplate。

让演示者使用RequestFactory并为您的有效负载使用GWT覆盖功能。