Интерфейс генерации сообщений i18nCreator с типом аргумента, отличным от строки - PullRequest
4 голосов
/ 20 августа 2011

Я пытался выучить GWT. Я заполнил пример приложения StockWatcher в учебнике .

Затем я перешел к следующему шагу: Интернационализация (I18N).

В руководстве по I18N вы создадите интерфейсы Message и Constant вручную. Один из файлов сообщений выглядит следующим образом:

public interface StockWatcherMessages extends Messages {
    @DefaultMessage("''{0}'' is not a valid symbol.")
    String invalidSymbol(String symbol);

    @DefaultMessage("Last update: {0,date,medium} {0,time,medium}")
    String lastUpdate(Date timestamp);
}

Обратите внимание на параметр типа Date в одном из методов. Это позволяет мне передать экземпляр Date, когда я вызываю этот метод, и он отображается локально. Это сработало просто отлично.

GWT также имеет инструмент i18nCreator, который можно использовать для генерации этих интерфейсов для вас на основе соответствующих файлов .properties.

Я использую gwt-maven-plugin для сборки моего приложения и также поддерживает использование i18nCreator в качестве автоматической части вашей сборки .

Так что моя проблема в том, что когда я использую i18nCreator, явно или через плагин maven, я получаю интерфейс Message, подобный этому:

public interface StockWatcherMessages extends com.google.gwt.i18n.client.Messages {
    @DefaultMessage("''{0}'' is not a valid symbol.")
    @Key("invalidSymbol")
    String invalidSymbol(String arg0);

    @DefaultMessage("Last update: {0,date,medium} {0,time,medium}")
    @Key("lastUpdate")
    String lastUpdate(String arg0);
}

Аргумент lastUpdate теперь является строкой. Это приводит к тому, что остальная часть моего кода, который вызывает этот метод с экземпляром Date, не скомпилируется.

Как я могу заставить i18nCreator создавать интерфейсы, используя подходящие типы Java, кроме Strings? У меня возникла эта проблема с Date, но я думаю, что она может возникнуть с другими типами, такими как Money или Double или с чем-либо еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...