2012-06-25 3 views
1

Я начал использовать веб-поток Grails, чтобы реализовать мастер.Название динамического шага Grails webflow

checkStep { 

     action { 
      User user = springSecurityService.currentUser 
      if (springSecurityService.loggedIn){ 
       def next = wizardService.getNextFlowStep(user) 
       switch (next) { 
         case step1: 
           step1() 
           break 
    ... 
       } 
     } 
     on("step1").to "wizard_step1" 
    } // checkStep 
wizard_step1() { 
    ... 
} 

Я хотел бы написать первый шаг в более изящном способе, таким образом, что на базе «wizardService» следующий шаг будет определяться. Я также предпочел, чтобы этапы были определены во время выполнения, так что имена и порядок имен шагов могут находиться в базе данных.

БЛАГОДАРЯ

ответ

0

Вы хотите использовать в Groovy dynamic method invocation что-то вроде этого. Я не уверен, если это действительно будет работать внутри WebFlow, но это должно выглядеть примерно так ....

 def next = wizardService.getNextFlowStep(user); // returns 'step1'; 
     "${next}"(); // you may have to use 'this."${next}"();' 
+0

С помощью этого решения вы все равно должны явно перечислить все 'на («Foo») .to ('bar') '(хотя это может быть сделано с циклом for, если имена событий и состояний следуют некоторой структуре). Я не думаю, что есть способ обойти это, структура потока (состояния и переходы) должна быть известна в момент запуска приложения. [Этот вопрос] (http://stackoverflow.com/questions/11126683/grails-webflow-access-flow-scope-outside-of-action-or-transition-states/11168991#11168991) говорит о похожей ситуации, связанной с подтонами , –

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