问题标签 [gwt-compiler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
4196 浏览

java - GWT:无法在“节点”上执行“insertBefore”:需要 2 个参数,但只有 1 个存在

我有一个 GWT 项目,所以我的 javascript 代码是由 GWT 编译器生成的。上次 chrome 更新后,Javascript 代码开始抛出异常,“无法在 'Node' 上执行 'insertBefore':需要 2 个参数,但只有 1 个存在。” 因为javascript代码有一些类似的行:

如果我将上面的代码更改为:

GWT 是否必须发布新的更新来解决此问题?或者是否可以编辑或覆盖 GWT 编译器来解决生成的错误代码?

谢谢大家。

0 投票
1 回答
155 浏览

validation - 在 GWT 中使用 JSR-303 进行内联验证,第 1 部分:TextBox 验证失败。为什么?

我想使用JSR-303对表单中的字段执行内联验证。通过内联(也称为即时)验证,我的意思是每个字段都在用户通过表单工作时进行验证(例如在模糊或按键时​​),而不是推迟验证直到按下提交按钮。通常,错误消息显示在输入字段附近。

我正在遵循GWT 验证开发指南中描述的过程, 其中一个示例显示了为类中的字段(在本例中为一个字段name)定义的 JSR-303 约束Person

要验证的类(仅Person在这种情况下)是这样指定的:

假设我有一个TextBox我想要执行内联验证的。我试图定义这样的约束:

对应的定义在MyValidatorFactory

但是,这不会编译(我使用的是 GWT 2.7.0),产生以下错误:

这里发生了什么,为什么这不起作用?

错误消息是指生成的源代码。我想知道如何将它们与我的源代码联系起来。在不了解到底是什么损坏的情况下,人们会求助于实验性更改来寻找修复:-(。

其中一项实验性变化产生了一些似乎有效的东西。我已经发布了另一个问题: 在 GWT 中使用 JSR-303 进行内联验证,第 2 部分:一个好的实现?,所以如果想建议如何进行内联验证,也许看看那个问题。这个问题是关于理解为什么在我的 FooWidget 中放置约束的方法不起作用。

进一步的细节:我知道要验证的类应该实现 Serializable,因为不这样做意味着它不是 Java Bean。但是网上有很多例子还没有做到这一点。有关系吗?

0 投票
2 回答
273 浏览

java - 是否可以从 GWT Compile 获取缓存文件的非随机名称

当我尝试在 Lighthttp 服务器中为我的项目加载 war 文件时,对于生成的 JS 文件,我从服务器收到“文件名太长”错误,例如:

“733C57A6999C647D009A3EBA1F5CEF9C.cache.js”

当我编译时,我使用了 collapse all 属性,因此只创建了一个 JS 文件

我想知道在代码本身或 xml 文件中是否可以在编译之前生成一个较短的名称(我不想每次都重命名文件)

任何帮助将非常感激。

0 投票
1 回答
83 浏览

gwt - 当 cookie 禁用时,GWT 根面板上不显示任何内容

我正在研究 GWT cookie。我正在检查 cookie 是否已启用,如果未启用以显示我编写了以下代码的 gwt 弹出窗口:

但是当我在浏览器中禁用 cookie 并尝试运行代码时,什么都没有出现?请问有人可以建议我这个问题的可能原因以及解决这个问题的解决方案吗?

谢谢。

0 投票
1 回答
253 浏览

java - 自定义资源密钥生成以促进向后兼容性

我最近才发现,您可以将资源的键从默认的“方法名称”方法更改为自定义指定的键。

我现在正在考虑将格式切换为“点分隔”格式(通常在 Java 项目中使用)。

我知道,这可以通过使用@Key("my.new.key")注释或使用注释提供自定义KeyGenerator来实现@GenerateKeys

问题是,我正在寻找一种支持我的新格式和旧格式的解决方案。这是向后兼容所必需的。我向公众发布了我的工具,他们可以提供自己的属性文件(及其自定义内容)。这意味着我无法更改他们的密钥以匹配我的新格式。

我现在正在寻找一种使用新密钥(如果可用)并在必要时回退到旧密钥的解决方案。

我以为我很聪明,想出了这个KeyGenerator

这将检查属性文件中是否存在新密钥。如果是,则返回它,如果不是,则返回旧密钥。

然而,我收到的是这个错误:

这似乎表明, myKeyGenerator要么仅在@Key不存在时使用,要么在 my 执行之前执行此 GWT 检查KeyGenerator

有谁知道如何解决这个问题?或者也许有人知道另一种解决方案?

更新

刚在这里找到这个找到这个:

@Key(String key)

指定用于此特定方法的外部格式的密钥。如果未提供,它将根据@GenerateKeys上面讨论的注释生成。

这似乎使我的目标无法实现......还有其他建议吗?

0 投票
0 回答
613 浏览

java - 如何使用 GWT RPC 异步调用作为 GWT.runAsync RunAsyncCallback 分割点?

我们是 GWT RPC 的重度用户,并将其包装到一个框架中,使其更加可用。应用程序很大,并且会变得更大,因此我们需要更多地考虑拆分点。为我们的应用程序设置拆分点的一种非常自然的方式是围绕 GWT RPC 调用。从这个角度来看,它们已经是异步且安全的,并且它很好地分隔了我们应用程序的各个区域。

问题是是否有一种方法可以在 GWT RPC 调用周围通用地应用 GWT 拆分点,而无需开发人员在双异步调用中显式编码 - 特别是我们不想这样做:

我们尝试在我们的框架中添加 GWT.runAsync 包装(对所有 GWT RPC 调用都可行),但这只会拆分框架方法的小部分,它是通用的并且始终需要 - GWT(2.7.0)无法确定(通过编译时静态分析),这可以而且应该适用于对该方法的所有调用)。

有没有一种方法可以实现这一点,而无需开发人员必须专门在 runAsync 中额外包装他们的代码?

谢谢!

0 投票
2 回答
443 浏览

gwt - 使用系统内存作为 GWT SuperDev 模式的工作目录

我正在使用 GWT SuperDev 模式来编译一个巨大的 GWT 项目,该项目会产生大量的代码服务器临时文件。这些文件存储在 Windows%TEMP%路径中,浪费了大量磁盘空间,我必须每天手动清理它们。另外,访问硬盘驱动器上的数据肯定比RAM慢得多,所以我想知道有没有办法强制GWT编译器在我调试项目时将这些文件保留在RAM中而不是HDD中并在之后释放内存停止 SuperDev 调试模式?(换句话说,我想使用系统内存作为 GWT 的工作目录)

0 投票
1 回答
534 浏览

java - GWT 编译器 NoSuchMethodError

我的 GWT 编译器开始失败并出现 NoSuchMethodError。当我将方法参数从 Long 更新为 long 时,它开始发生。我不应该需要,但我尝试将其切换回来,但我仍然遇到同样的错误。我的 java eclipse 运行时编译器没有将该行视为错误,并且在开发模式下一切都运行良好。

因此,它似乎将 long's 和 Long's 视为不同的类型。这是实际方法的样子:

我不确定这是否与它有关,但在错误消息中,它输出的行与我的代码中的内容略有不同。它将长变量“val”替换为“Long.valueOf(val)”。

我尝试添加长版本和长版本,看看它是否解决了这个问题,它确实解决了,但它在另一个地方也出现了类似的错误。这是一个 GWT 错误还是我可能配置错误?

这是完整的编译器日志:

0 投票
0 回答
295 浏览

eclipse - GWT 2.7.0 superDevMode 重新编译(cache.js.gz 错误)

我正在使用 eclipse 开发一个 gwt 应用程序,最近我从 GWT 2.6.0 迁移到了 2.7.0。我一直在使用超级开发模式(带有内置码头),它在 2.6 上运行良好。在 2.7 上使用 superdev 模式时,链接器经常无法检测到 cache.js.gz,这似乎会导致 gwt 通过简单的刷新(在 firefox 上按 F5)生成大量的重新编译。最近我用 ccleaner 清除了我的 Temp 文件夹,我不确定这是否会影响用于码头代码服务器的文件。尽管通常每次运行 gwt 应用程序时,它都会在 Temp/ 文件夹中生成所有必要的文件。

这是一个示例日志:

这个 [GET/recompile-starting job-Sent error page: not found:] 循环继续并生成 30-40 次编译,甚至大大减慢了调试过程……有时甚至在第一次编译时发生……任何想法-想法如何解决这个问题?

0 投票
2 回答
283 浏览

java - GWT 会在编译期间删除未使用的类吗?

假设我有一个大致如下的项目结构:

module.gwt.xml文件有:

当我使用 GWT 编译这个项目时,有多少 Java 代码会被编译成 Javascript?

  • 是否NotUsedByClient.java包括在内,即使入口点没有引用它?
  • UsedByClient.java全部还是部分包括在内?例如,如果它有m()未被调用的方法,是否Clientm被编译?

动机是不幸的是,我正在使用一个遗留代码库,该代码库的服务器端代码与客户端代码一起存在于同一个包中,将它们分开需要一些工作。客户端不使用服务器端代码,但我担心 GWT 可能会将其编译为 Javascript,从而有人可能会注意到它并尝试对其进行逆向工程。