2012-05-11 8 views
3

GrailsのWeb-flowでリダイレクションに関する質問があります。 私はユーザーが質問の回答を入力できるビュー状態です。間違った2回の試行で、別のコントローラからページを表示するようにユーザーをリダイレクトすることができます。私が意味するのはGrailsでのリダイレクトWeb-flow

challengeQuestionOne{ 
      onRender() { 
       //Display question 
      } 
      on('next') {BuildQuestion command -> 
       bindData(flow.recovery,command) 
       [return the model to flow] 
       if(command.hasErrors()) { 
        flow.command = command 
        return error() 
       } 
       if(check for status. If doesnot pass){ 
        flash.message=message(code:'loginForm.account.locked', default: 'Please Contact Admin.') 
        redirect(controller : "login",action: "login")//how to redirect from here to diff controller 
       }      
       if (//compare answer entered) { 

       } 
       else{ 
        //set status not active 
       } 

      }.to("challengeQuestionTwo") 
      on(Exception).to("error") 
      on('cancel').to('finish')     
     } 

私はonRenderからリダイレクトしようとしました。それはページにリダイレクトされました。しかし、どのようにリダイレクトされたページにエラーmsgを表示するのですか?どのように私はエラーメッセージを他のコントローラから転送できますか?

答えて

3

イヴォHoubrechtsは、Grailsの優秀チュートリアルを書いたのWebflow:

Webflowのは、独自のフラッシュスコープを定義します。標準的なgrailsのフラッシュスコープと同じセマンティクスを持っていますが(主な目的は、次の要求後までオブジェクトを格納することです)、それは異なるスコープです。つまり、webflowのフラッシュスコープに格納されているオブジェクトは、標準のgrailsアクションでは表示されません。

import org.springframework.web.context.request.RequestContextHolder 
.... 
RequestContextHolder.currentRequestAttributes().flashScope.message = "YourMessage" 

あなたはここで多くを読むことができます:

http://livesnippets.cloudfoundry.com/docs/guide/

0

この場合、Flashスコープは期待どおりに動作しません。 エラーを表示する別の方法を試してみてください。例えば。リダイレクトでパラメータを渡すことができます。それとも、いくつかの例外をスローし、次のようにレンダリングされたページ上でそれを確認することができます。

<g:if test="${flowExecutionException}"> 
    <div class="error"><g:message code="loginForm.account.locked"/></div> 
</g:if> 
+0

のYaaは....私は、リダイレクトでパラメータを送信する最初のアプローチを使用していました。しかし、flowExecutionExceptionも良く見えます...私はそれを試みます –

関連する問題