2017-07-27 8 views
0

を持っている場合、正しく方法を覚えていません、私は新しいドメインを作成するためのこれら二つの方法を持っている方法を保存します(newSubDomainビュー内の)フォームのパラメータを使用して、userDomainListをgspに渡すので、そこからselectを作成できます。Grailsはエラー

def newSubDomain() { 
     def currentUser = springSecurityService.getCurrentUser() 
     def domainList = currentUser.domains //an hasMany domain for user 
     def subDomain = new SubDomain(params) 
     [subDomain: subDomain, domainList: domainList ] 
    } 

2つ目は、保存ある()メソッド

def saveSubDomain(SubDomain subDomain) { 

    if (subDomain== null) { 
     notFound() 
     return 
    } 

    if (subDomain.hasErrors()) { 
     respond subDomain.errors, view:'newSubDomain' 
     return 
    } 

    subDomain.save flush: true  

    redirect(controller: "controller", action: "action")    
} 

サブドメインが、私は同じ名前のサブドメインを作成した場合、私はそれが上のエラーメッセージを表示したい、ユニークな名前を持っている必要がありますnewSubDomainビューのトップですが、これは起こりますが、エラーを渡すメソッドを呼び出すと、ビュー内でselectをロードできないように、「domainList」を再ロードおよび/または渡しません。

これは私が間違ってやっている何newSubDomain.gspビュー

<g:hasErrors bean="${this.subDomain}"> 
     <ul class="errors" role="alert"> 
      <g:eachError bean="${this.subDomain}" var="error"> 
       <li <g:if test="${error in org.springframework.validation.FieldError}">data-field-id="${error.field}"</g:if>><g:message error="${error}"/></li> 
      </g:eachError> 
     </ul> 
    </g:hasErrors> 


    <g:form controller="subDomain " action="saveSubDomain"> 

     <f:field bean="subDomain " property="name"/> 
     <br> 
     <f:field bean="subDomain" property="domain"> 
     <g:select name="domain" 
        from="${domainList}" 
        optionKey="id" 
        optionValue="name" 
     /> 
    </f:field> 

     <g:actionSubmit value="Save sub Domain" action="saveSubDomain"/> 
    </g:form> 

のコードの一部ですか?私はgrails(または一般的なWebアプリケーション)についてよく知っていませんが、コントローラから見るためにパラメータを渡すより良い方法がありますか?なぜ、エラーが発生したときにnewSubDomainビューを再度呼び出すと、domainListを渡さないのですか?

答えて

0

newSubDomainでは、domainListのデータをマーシャリングし、新しいサブドメインをnewSubDomainビューに使用して提供します。

saveSubDomainでは、そのメソッドはサブドメインオブジェクトのみを受け取ります。エラーが見つかると、saveSubDomainコントローラー・メソッドはユーザーをnewSubDomainビューに戻すために必要なデータを使用しますが、saveSubDomainメソッドにはdomainList変数が移入されません。したがって、ビューにはdomainListデータが表示されません。

関連する問題