gpt4 book ai didi

java - GWT Maven 插件 : Generating non-String parameters in the Messages class

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:26:53 24 4
gpt4 key购买 nike

我的“Messages.properties”文件中有一个属性,它有一个使用数字格式的参数:

my.message=File exceeds {0,number,0.0}MB.

当我运行 gwt:i18n Maven 目标时,它会根据我的“Messages.properties”文件中的属性生成一个Messages 接口(interface)(与正常情况一样):

public interface Messages extends com.google.gwt.i18n.client.Messages {
//...

@DefaultMessage("File exceeds {0,number,0.0}MB.")
@Key("my.message")
String my_message(String arg0);

//...
}

问题是方法参数是一个String。当我运行该应用程序时,它给我一个错误,因为消息参数需要一个数字,但提供了一个字符串(错误消息是“只有数字子类可以格式化为数字”)。

如何配置 Maven 使其将此参数更改为数字(如 floatNumber)?谢谢。

最佳答案

鉴于上述讨论,我决定补充我之前的回答。首先,据我所知,您无法使用现有的 i18n Maven 目标(和 GWT 的 I18NCreator)来执行要求的操作。其次,在对我建议的生成器解决方案进行更多研究后,我发现:

  • Michael 是正确的,您不会像上面建议的那样使用接口(interface)方法查找属性(GWT 中的错误)在编译时发现错误。然而,这仍然是最简单/最快捷的方法。
  • 您可以通过编写自己的接口(interface)来确保编译时检查与属性文件保持同步,每个属性都有一个方法,然后获取您的生成器编写一个实现该接口(interface)的类。注意当您更改属性文件中的属性时,您只需要更改您编写的界面。如果你已经编写了生成器正确的,它永远不必再改变!最好的方法关于方法名称可能遵循 GWT:如果调用属性the.prop.one,则方法名为the_prop_one(..)。
  • 如果你真的不想手动维护一个接口(interface),唯一的我可以看到的方式是让你编写你自己的 I18NCreator 版本。这是因为 maven 目标 i18n 不是 GWT 编译器参数,而是调用 maven 插件来编写
    基于在中找到的属性文件的消息/常量接口(interface)类路径。因此,如果您编写自己的 I18NCreator,您将
    还必须编写一个 Maven 插件,您可以在之前调用它编译 GWT 应用程序。或者,为了更简单,您可以简单地手动运行 I18NCreator(使用古老的 java 命令运行它)每次你改变你的属性文件键(当然,
    当只有实际消息发生变化时,无需运行它。

就个人而言,我只会编写和维护我的属性文件和手动镜像它的界面。 Generator 总是会查看属性文件并生成属性对应的方法(根据实际消息需要任何参数),因此如果您编写的接口(interface)反射(reflect)了属性文件,Generator 生成的类将始终正确实现。

关于java - GWT Maven 插件 : Generating non-String parameters in the Messages class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7854403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com