2014-09-12 4 views
0

더 바인딩 개체 속성 없지만, 명령 객체의 하나 개의 속성은 항상명령은 내가 어떤 명령 개체 유효성 검사를 구현하기 위해 노력하고

도메인 클래스

package ni.sb 

class PurchaseOrder implements Serializable { 
    Date dateCreated 
    Date dutyDate 
    String invoiceNumber 
    BigDecimal balance 
    String typeOfPurchase 

    Date lastUpdated 

    static constraints = { 
    dutyDate nullable:false, validator: { dutyDate -> 
    def today = new Date() 

    if (dutyDate <= today) { 
     "notMatch" 
    } 
    } 
    invoiceNumber blank:false, unique:true 
    balance nullable:true 
    typeOfPurchase inList:["Contado", "Credito"], maxSize:255 
} 

}

이를 null를 돌려 바인딩되지 명령 개체

class PurchaseOrderCommand implements Serializable { 
    Date dutyDate 
    String invoiceNumber 
    String typeOfPurchase 

    static constraints = { 
    importFrom PurchaseOrder 
} 

은}입니다

내가 PARAMS에서) (바보 시도하고 내가이

조각의 params.dump()

dutyDate을 얻을 cmd를 한 후 여기에

def actName(PurchaseOrderCommand cmd) { 
    if (cmd.hasErrors()) { 
    println params.dump() 
    println cmd.dump() 

    return 
    } 
} 

dutyDate 바인딩되지 않은 컨트롤러 작업입니다 : 2014년 9월 25일

조각의 cmd.dump()

dutyDate = null이

난 당신이 내가 당신이 오류를 볼 것으로 기대 cmd.errors를 검사하면 당신이 나에게

+0

어떤 Grails 버전을 사용하고 있습니까? –

답변

0

을 도울 수 있기를 바랍니다. 또는 당신은 "YYYY-MM를 설정할 수

import org.grails.databinding.BindingFormat 

class PurchaseOrderCommand implements Serializable { 
    @BindingFormat('yyyy-MM-dd') 
    Date dutyDate 
    String invoiceNumber 
    String typeOfPurchase 
} 

을 : 당신의 날짜 요청 매개 변수가"2014년 9월 25일 "와 같은 포맷하고 다음이 같은 일을해야 Grails의 최근 버전을 사용하는 경우

-dd "를 Config.groovy의 기본 형식 중 하나로 지정합니다.

// grails-app/conf/Config.groovy 
grails.databinding.dateFormats = ['yyyy-MM-dd', 
            'MMddyyyy', 
            'yyyy-MM-dd HH:mm:ss.S', 
            "yyyy-MM-dd'T'hh:mm:ss'Z'"] 
// ... 

저는 도움이되기를 바랍니다.

+0

Grails 2.3에'BindingFormat'을 도입했다고 생각합니다. –

+0

감사합니다. 제프,이 제안을 구현하려고합니다. – user615274

+0

이 예제는 작동하지 않습니다 (최소한 grails 2.5.2에서), 주석 속성'code'가 없으므로'@BindingFormat (code = 'yyyy-MM-dd')'가 정확합니다. – iberck

관련 문제