GWT“共享”对象继承/替换转换器

时间:2014-08-08 10:00:20

标签: gwt gwt-rpc requestfactory

在GWT应用程序中,我们有一个“共享”包,顾名思义,它包含客户端和服务器端代码之间共享的对象。 我们有一个多模块maven项目:

+ server
|  |
|  + businessLogicPackage
|
+ gwt
   |
   + client
   |
   + server
   |    |
   |    + converter
   |    |
   |    + rpc
   |
   + shared 

每次我需要在服务器模块中重用共享对象时,我需要使用位于gwt / server / converter中的某个转换器来转换共享对象。 我尝试使用继承并让共享对象从server / businessLogicPackage继承类,以为我可以通过简单的转换操作来逃避。这会产生错误。显然GWT无法从外部模块编译源代码。

> No source code is available for type server.businessLogicPackage.x; did you forget to inherit a required module ?

知道:

  • 我们正在操纵大量的“共享”对象
  • 我希望我的业务逻辑保留在一个单独的模块中,以便我可以在其他地方重复使用
  • 我不想写所有这些转换器

有人可以与我分享一些最佳做法/替代方案吗? 2014年的时尚潮流是什么?

2 个答案:

答案 0 :(得分:1)

您的问题是使用gwt模块中的类和服务器模块中的共享包而无需手动转换?

您可以简单地创建一个名为shared的第三个模块,例如包含gwt客户端和服务器模块使用的类。

gwt和服务器模块依赖于这个新的共享模块。 要使GWT能够访问源,您可以向新模块添加MySharedModuleName.gwt.xml并将其包添加为源。在您的GWT模块中,为MySharedModuleName添加继承标记。

然后,GWT需要访问来源。如果您创建它,可以在gwt模块中添加依赖项到源jar:<classifier>sources</classifier>。或者在共享模块中添加目标gwt:resources以在jar中包含源。

答案 1 :(得分:0)

最后我将源添加到已编译的jar中,因此只向POM添加一个依赖项(没有分类器)就足够了。我的GWT模块继承自&#34;共享&#34;的GWT模块。由Nicolas Morel提出的maven-module。

    <build>
        <resources>
            <resource>
                <directory>${project.build.sourceDirectory}</directory>
            </resource>
            <resource>
                <directory>${basedir}/src/main/resources</directory>
            </resource>
        </resources>
    </build>