Можно ли перегружать сообщения-методы в GWT i18n - PullRequest
5 голосов
/ 09 июня 2011

У меня есть com.google.gwt.i18n.client.Messages реализация для локализуемого GWT-проекта.

Но, похоже, методы перегрузить невозможно. Это ошибка или есть причина?

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}" .

1 Ответ

4 голосов
/ 09 июня 2011

Ваш интерфейс сообщений основан на файле свойств. Поскольку в вашем интерфейсе есть методы, использующие одно и то же имя, 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 );
}
...