GWT“共享”对象继承/转换器的替代品
Posted
技术标签:
【中文标题】GWT“共享”对象继承/转换器的替代品【英文标题】:GWT "shared" objects inheritance / alternative to converters 【发布时间】:2014-08-08 10:00:20 【问题描述】:在 GWT 应用程序中,我们有一个“共享”包,顾名思义,它包含在客户端和服务器端代码之间共享的对象。 我们有一个多模块 maven 项目:
+ server
| |
| + businessLogicPackage
|
+ gwt
|
+ client
|
+ server
| |
| + converter
| |
| + rpc
|
+ shared
每次我需要在服务器模块中重用共享对象时,我都需要使用位于 gwt/server/converter 中的某个转换器来转换共享对象。 我尝试使用继承并让共享对象从服务器/businessLogicPackage 继承类,以为我可以通过简单的强制转换操作摆脱困境。这会产生错误。显然 GWT 无法编译来自外部模块的源代码。
> No source code is available for type server.businessLogicPackage.x; did you forget to inherit a required module ?
知道:
我们正在处理大量“共享”对象 我希望我的业务逻辑保留在一个单独的模块中,以便我可以在其他地方重用它 我不想写所有这些转换器谁能与我分享一些最佳实践/替代方案? 2014年现在流行什么?
【问题讨论】:
【参考方案1】:您的问题是使用 gwt 模块中的类和服务器模块中的共享包而不需要手动转换?
您可以简单地创建一个名为 shared 的第三个模块,例如它包含 gwt 客户端和服务器模块使用的类。
gwt 和服务器模块依赖于这个新的共享模块。
为了让 GWT 能够访问源代码,您将 MySharedModuleName.gwt.xml
添加到新模块并将其包添加为源代码。在您的 GWT 模块中,为 MySharedModuleName
添加一个继承标签。
然后,GWT 需要访问源。如果你创建它,你可以在你的 gwt 模块 pom 中添加对源 jar 的依赖:<classifier>sources</classifier>
。或者在您的共享模块中添加目标 gwt:resources 以包含 jar 中的源代码。
【讨论】:
【参考方案2】:最后我将源代码添加到已编译的 jar 中,因此只需向 POM 添加一个依赖项(没有分类器)就足够了。我的 GWT 模块继承自 Nicolas Morel 提出的“共享”maven 模块的 GWT 模块。
<build>
<resources>
<resource>
<directory>$project.build.sourceDirectory</directory>
</resource>
<resource>
<directory>$basedir/src/main/resources</directory>
</resource>
</resources>
</build>
【讨论】:
以上是关于GWT“共享”对象继承/转换器的替代品的主要内容,如果未能解决你的问题,请参考以下文章
GWT(客户端)=如何将对象转换为 JSON 并发送到服务器?