в griffon я могу «настроить» представление, используя внешний файл конфигурации?

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

if (model.stillageType.equals("SNP3")){
  // build a panel  ..  
}

if (model.stillageType.equals("SNP6")){
  // build a different panel ..  
}

В настоящее время я пытаюсь установить модель из mvcGroupInit через локальный файл конфигурации — я читаю файл и устанавливаю модель — но мое представление, похоже, уже создано в это время, и ничего не отображается. После установки значение не изменится - это не динамическое свойство. Я просто хочу иметь возможность загружать несколько версий на разных ПК, на каждой из которых отображается другая панель дизайна. Я могу обойти это, жестко кодируя каждый дистрибутив, но мне бы очень хотелось загрузить его из файла конфигурации. В моей подпрограмме mvcGroupInit я имеют ..

model.stillageType =
         connector.properties.get('stillageType')

который загрузит модель, НО я думаю, что представление уже создано и не применяется. Могу ли я это сделать?

Спасибо


person user3914455    schedule 20.03.2015    source источник


Ответы (2)


Это Гриффон 1.5 или Гриффон 2.0? В Griffon 1.5 вы можете инициализировать модель, предоставив конструктор или переопределив mvcGroupInit(); убедившись, что член model определен перед view в Config.groovy. В Griffon 2.0 вы можете дополнительно аннотировать метод с помощью @PostConstruct, который будет вызываться после конструктора и перед методом mvcGroupInit(). Опять же, убедившись, что model определено до view (по умолчанию), будет гарантировать, что model.mvcGroupInit() вызывается до инициализации view.

person Andres Almiray    schedule 22.03.2015

Я использую Griffon 1.5. Я изменил файл Config.groovy для этой mvcGroup, чтобы создать модель, контроллер, представление, а не модель, представление, контроллер. Я предполагаю, что это позволило подпрограмме mvcGroupInit правильно инициализировать мою модель ДО того, как представление было создано, что позволило представлению подобрать модифицированную версию моей модели. Теперь работает нормально.

person user3914455    schedule 23.03.2015