Сначала я подумал, что вы перечислили псевдокод, но я сделал пример приложения, используя ваш пример, и также получил NPE. Я думаю, что проблема может заключаться в структуре вашего потока. action
блоки должны идти в состоянии потока. Ваше определение потока должно выглядеть примерно так:
class CheckoutController {
ShoppingService shoppingService
def checkoutFlow = {
start {
action {
flow.addresses = shoppingService.getOrder()
if(flow.addresses) {
showForm()
}
else {
showError()
}
}
on("showForm").to "showForm"
on("showError").to "showError"
}
showError {
...
}
//etc.
}
}
Вы определенно можете использовать внедренные сервисы в своих веб-потоках. Я предполагаю, что проблема заключается в вашей структуре потока.