Хм, прошло немного времени с тех пор, как я сделал поток, и ваш пример упрощен (надеюсь, просто ради примера).
Чего вам не хватает, так это начального действия в потоке. Имейте в виду, что действие потока «просмотр» в качестве вашего showProducts просто говорит о том, что делать, когда ваш showProducts gSP ПРЕДСТАВЛЯЕТ. Это действие, которое отправило вас показать продукты, которые должны создать модель для использования в showProducts.gsp
def ShoppingCartFlow = {
initialize {
action { // note this is an ACTION flow task
// perform some code
[ model: modelInstance ] // this model will be used in showProducts.gsp
}
on ("success").to "showProducts"
// it's the above line that sends you to showProducts.gsp
}
showProducts {
// note lack of action{} means this is a VIEW flow task
// you'll get here when you click an action button from showProducts.gsp
on("checkout").to "enterPersonalDetails"
on("continueShopping").to "displayCatalogue"
}
// etc. (you'll need an enterPersonalDetails task,
// displayCatalogue task, and they
// should both be ACTION tasks)
}
Имеет смысл?