3

Grails web-flow のリダイレクトに関して質問があります。ユーザーが質問の回答を入力できるビュー ステートにいます。2回間違った試行で、ユーザーをリダイレクトして、別のコントローラーからページを表示できるはずです。私が言いたいのは

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 からリダイレクトしようとしました。ページにリダイレクトしていました。しかし、リダイレクトされたページにエラーメッセージを表示するにはどうすればよいですか。エラーメッセージをあるコントローラーから別のコントローラーに転送するにはどうすればよいですか??

4

2 に答える 2

3

Ivo Houbrechts は、grails webflow に関する優れたチュートリアルを書きました。

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

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

ここでもっと読むことができます:

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

于 2012-08-02T07:12:46.390 に答える
0

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

<g:if test="${flowExecutionException}">
    <div class="error"><g:message code="loginForm.account.locked"/></div>
</g:if>
于 2012-05-13T15:04:01.623 に答える