2010-10-07 3 views
4

У меня есть класс, который расширяет AbstractGinModuleGoogle GIN AbstractGinModule & GWT.Create()

как:

public class ClientModule extends AbstractGinModule { 

    public ClientModule() { } 

@Override 
    protected void configure() { 
    ... 
    ... 
    bind(...class).annotatedWith(...).to(...class).in(Singleton.class); 
    ... 
    } 
} 

Идея, что у меня есть, чтобы связать один класс с другим классом, основанной на значение, хранящееся в файле свойств.

как:

пары содержат значение, поступающее из файла свойств

if(param.equals("instanceB")) 
    bind(a.class).to(b.class) 
else 
    bind(a.class).to(c.class) 

У меня есть класс, который доступ к этому файлу свойств и возвращает строку со значением. Этот класс называется: InstanceParameters.java

Я хотел бы получить экземпляр этого класса в моем ClientModule. Но я не знаю, как это сделать. Я попытался с:

- InstanceParameters param = new InstanceParameters(); 
- GWT.create(InstanceParameters.class); (Error because this method should only be used on the client side) 

Есть ли способ, чтобы получить доступ к этому классу InstanceParameters в этом clientModule?

Спасибо за вашу помощь

+0

Вы не разместили класс 'InstanceParameters', но я предполагаю, что вы используете в нем некоторые классы Java для чтения файлов с жесткого диска - что-то, что не поддерживается подмножеством JWT JWT. Что именно вы пытаетесь достичь, «контролируя» компиляцию через файл свойств? Почему вы не можете сделать это из классов Java (например, через аннотации)? –

+0

Класс instanceParameters использует объект Dictionary "com.google.gwt.i18n.client.Dictionary". В конструкторе InstanceParameters я запускаю словарь с помощью «this.parameters = Dictionary.getDictionary (« NameOfFile »); , И это метод, который я использую для получения значения из этого файла «return parameters.get (« applicationTitleShort »);». Обычно это должно быть нормально. – AbstractMan

+0

Я просто попытался создать простой класс с одним атрибутом. (связанный геттер и сеттер). И я могу создать экземпляр этого в ClientModule. Я не понимаю ... – AbstractMan

ответ

1

Вам не нужно читать файл перед запуском приложения - только перед созданием AbstractGinModule (через GWT.create). Итак, загрузите Dictionary в свой метод onModuleLoad и передайте параметры, как в целом, InstanceParameters, так и в виде извлеченной строки, через поставщика или любым другим способом.

+0

Благодарим вас за ответ. Я не был уверен, что корреспондент понял, что вы отвечаете, но я сделал следующее: в onloadModule() я получаю словарь, я беру значение, поступающее из файла .property. Я делаю тест в этом режиме. В зависимости от значения я использую один модуль или другой. Вы считаете, что это правильно? – AbstractMan

+0

Да, это правильно - я предлагал поместить часть тестирования в сам модуль, но ваш работает лучше, когда, например, конфигурация (то есть модуль, расширяющий 'AbstractGinModule') усложняется и т. Д. (On с другой стороны, вам нужно обновить два модуля Gin ...) Я не могу вспомнить atm, но я уверен, что есть способ передать значения Gin (в худшем случае используйте «public final static» 'полей вашего модуля GWT, ugh). –

+0

Отлично. В это время.Я оставлю это так. Я буду исследовать, чтобы передать значение GIN поздно. Большое спасибо ;-) – AbstractMan

Смежные вопросы