7

명령 개체의 오류를 렌더링 할 수 없습니다. 그것은 잘하지만 내 .gsp보기 내가 인상 오류 렌더링하지 않습니다.리디렉션에서 렌더링 명령 유효성 검사 오류가 발생했습니다.

<g:hasErrors bean="${creditProvider}"> 
    <div class="errors"> 
     <g:renderErrors bean="${creditProvider}" as="list" /> 
    </div> 
</g:hasErrors> 

가 어떻게 오류가 표시 될 수 있습니다 :

다음
def handleModifyProfile2 = { CreditProviderModificationCommand cpmc -> // bind params to the command object 
    if (cpmc.hasErrors()) { 
     flash.message = "Error modifying your profile:" 
     redirect(action: "modifyProfile", params: [creditProvider : cpmc]) 
    } ... 

내가 내 .gsp보기에서 오류를 렌더링하려고하는 방법이다 : 여기

내 컨트롤러 액션이다 전망?

답변

9

params을 사용하여 리디렉션으로 명령을 보낼 수 없습니다. 대신 redirect() ING의 오류 조건에

  • render() :

    if(cpmc.hasErrors()) { 
        render(view: 'profile', model: [creditProvider: cpmc]) 
    } 
    

    이것은 당신이 무슨 일을하는지에 대한 가장 일반적인 관용구는 당신은 몇 가지 옵션이 있습니다. 세션의 명령이 리디렉션을 통해 그것을 유지하기 위해

  • 스토어 :

    if(cpmc.hasErrors()) { 
        session.cpmc = cpmc 
        redirect(...) 
    } 
    
    // and in your action 
    def cpmc = session.cpmc ?: null 
    render(view: 'profile', model: [creditProvider: cpmc]) 
    

    이 옵션은 다소 의문이다. 제대로 수행되지 않으면 세션을 오염시키고 객체를 매달아 메모리를 차지할 수 있습니다. 그래도 올바르게 수행 되었다면 post-redirect-get을 구현할 수 있습니다.

+0

AH 아! 3 시간 동안의 로밍이 종료되었습니다. 대단히 감사합니다! –

+0

물론, 문제 없습니다. –

+1

감사합니다. 귀하의 답변도 유용하다는 사실을 발견했습니다. BTW, 세션 대신 플래시를 사용하면 세션 오염을 직접 방지 할 수 있을까요? –

관련 문제