【问题标题】:Generate GWT Overlay Types生成 GWT 覆盖类型
【发布时间】:2012-06-20 06:19:33
【问题描述】:

是否有任何工具/脚本/方法可以从 Java bean 类自动生成覆盖类型?例如,通过在字段/getter 上添加注释,可能使用标准 JAXB 注释,如 @XmlElement

这里有一个重复的主题:Generate GWT Overlay types from Java objects,但是那里没有回答这个问题。唯一的答案是使用 Protostuff,这并不是我想要的。

【问题讨论】:

  • 叠加类型的原因是什么?你是用 JSON(P) 调用服务层吗?

标签: java gwt jaxb code-generation


【解决方案1】:

你为什么要覆盖类型?你想使用 JSON(P) 而不是 RPC 吗? 我在 RPC 层中使用 JAXB 注释对象,这样我就不需要对象的 2 个版本。 RPC 速度慢且难以加载测试,所以在这种情况下,我可以理解您想要采用覆盖方式。我正在一些产生重大影响的地方这样做。

【讨论】:

  • 因为:1) RPC 无法自动测试 2) 服务器依赖于 RPC 的 GWT 3) 在服务器上,我们有 Spring MVC 来处理所有事情:同步或异步。对于 Spring MVC,这无关紧要。您甚至可以在不接触服务器的情况下从同步更改为异步并返回。使用 RPC,您只能做梦。我们可以在整个应用程序中应用相同的过滤器,无论是否使用 GWT 4)您可以在 Firebug 等简单的嗅探器中查看所有请求数据 5)您可以将 JSON 数据留在页面上,以便随后从您的组件中读取(有用对于 Spring 表单)或使用 AJAX 返回它
【解决方案2】:

只要 Overlay Types 文档是最新的,由生成器生成 Overlay Type 实现是不可能的。

上面写着:

GWT 1.5 中覆盖类型的实现不支持 定义新 JSO 子类型的生成器(由于需要重新定义或 否则在后续编译期间扩展 JavaScriptObject$)。 这个限制仍然存在。

http://code.google.com/p/google-web-toolkit/wiki/OverlayTypes

【讨论】:

  • 有趣的想法,但我的意思不是通过 GWT 生成器生成,而是在通常的 Java 构建期间使用 Eclipse/Maven/Ant/etc 中的一些生成器生成
【解决方案3】:

最后我找到了一种方法来做到这一点,虽然它只是半自动化的。在 Eclipse 中,您可以像这样创建代码模板(Window / Preferences / Java / Editor / Templates):

public final native ${type:var} get${nameCamelCase:var}() /*-{
    return this.${name:var};
}-*/;

public final native void set${nameCamelCase}(${type} ${name}) /*-{
    this.${name} = ${name};
}-*/;

并给它起一个名字,比如“get”。 然后在任何 GWT 编辑器中键入“get”并按 Ctrl+Space,然后按 Enter。

【讨论】:

    猜你喜欢
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 2019-05-22
    • 2011-04-12
    • 1970-01-01
    相关资源
    最近更新 更多