2009-06-16 11 views
3

モデルデータをビューステートに渡す方法はありますか?次の例では、ビューステート考えてみましょう:私はshowProducts.gspにデータモデル[products: Product.list()]を渡したい場合はGrails web flow

class BookController { 
    def shoppingCartFlow = { 
    showProducts { 
     on("checkout").to "enterPersonalDetails" 
     on("continueShopping").to "displayCatalogue" 
    } 
    } 
} 

を、モデル内に格納アクション状態とビューステートの前から離れてこれを行うにはどのような方法がありますフロースコープ? "showProducts"、 モデル::[製品:Product.listを(ビューをレンダリング

おかげで、 ドン

答えて

0

は、たぶん私は質問を理解していないが、あなたは

を行うことはできません(お使いのコントローラ内部)]

+0

これは通常のコントローラアクションではなく、ウェブフロー状態です。私はあなたがビュー州の中で示唆したようにレンダリングメソッドを使用できるか分からない。 –

0

あなたは(あなたがチェックアウトに行きたいと仮定して)これを試すことができます:?

showProducts { 
     on("checkout"){ 
      // do somethings here too if you like 
      // then pass your data as below: 
      [products: Product.list()] 
     } .to "enterPersonalDetails" 
     on("continueShopping").to "displayCatalogue" 
} 
+0

私はshowProducts.gspにデータを渡したいのですが、enterPersonalDetails.gspではありません –

+0

私はあなたに例をあげてみましょう。 – tegbains

5

うーん、それは(ちょうど例のためであることのため、私は願っています)私は流れをやったので、少しして、そしてあなたの例では、単純化されています。

フローでの最初のアクションがありません。あなたのshowProductsのような "view"フローアクションは、あなたのshowProducts gsp POSTSが何をすべきかだけを示していることに留意してください。それ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) 
} 

で使用するモデルを作成する必要がありshowProductsにあなたを送ったアクションは、理にかなっていますか?

+0

それは2を使って、それを実装しました。ビューステートが続きます。私の質問は、これらが単一の状態に統合できるかどうかということでした。だから私は答えがノーだと思う。 –

+1

右のコードを(モデルの作成を含む)持つことができる唯一の時間は、アクションタスクまたは「遷移」タスク(オン(「」)とビュータスクのトゥー ""タスクの間にあります) – billjamesdev

関連する問題