【问题标题】:Is it possible to overload the Messages-Methods in GWT i18n是否可以重载 GWT i18n 中的消息方法
【发布时间】:2011-06-09 11:09:10
【问题描述】:

我有一个可本地化 GWT 项目的 com.google.gwt.i18n.client.Messages 实现。

但似乎不可能重载方法。是Bug还是有原因?

public interface CommonMessages extends Messages {

    public static final CommonMessages INSTANCE = GWT.create( CommonMessages.class );

    @DefaultMessage( "The entered text \"{0}\" contains the illegal character(s) \"{1}\" ." )
    String textValidatorError( String o, String e );

    @DefaultMessage( "The entered text \"{0}\" contains illegal character(s)." )
    String textValidatorError( String o );
}

提出:

        Rebinding common.client.i18n.CommonMessages
 [java] Invoking generator com.google.gwt.i18n.rebind.LocalizableGenerator
 [java]    Processing interface common.client.i18n.CommonMessages
 [java]       Generating method body for textValidatorError()
 [java]          [ERROR] Argument 1 beyond range of arguments: The entered text "{0}" contains the illegal character(s) "{1}" .

【问题讨论】:

    标签: java gwt internationalization overloading


    【解决方案1】:

    您的消息界面依赖于属性文件。 因为您的接口有使用相同名称的方法,所以 gwt 尝试在同一个文件中查找属性 textValidatorError 两次。 它第一次寻找带有 2 个参数的属性,并找到了它。第二次它正在寻找具有 1 个参数的属性,并找到具有两个参数的属性...因此出现错误。

    使用@Key注解指定不同的属性名。

    public interface CommonMessages extends Messages {
    
      public static final CommonMessages INSTANCE = GWT.create( CommonMessages.class );
    
      @DefaultMessage( "The entered text \"{0}\" contains the illegal character(s) \"{1}\" ." )
      String textValidatorError( String o, String e );
    
      @DefaultMessage( "The entered text \"{0}\" contains illegal character(s)." )
      @Key("textValidatorErrorAlternate")
      String textValidatorError( String o );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多