0
가격 (BigDecimal)을 취하는 필드가 4 개 있지만 가격 중 하나만 가격을 포함해야합니다. price2에 255.95가 포함되어 있고 다른 누군가가 price1에 가격을 입력하고 싶다면이 코드는 거부해야합니다 (이 경우 price2) 도메인에서 그렇게하려고 시도했으나하지 않았습니다. 나를 위해 일해.불변 필드의 grails 유효성 확인
예 :
groovy.lang.MissingMethodException: No signature of method: masterdetail.Author.and() is applicable for argument types: (java.lang.Boolean) values: [true]
Possible solutions: any(), any(groovy.lang.Closure), find(), find(groovy.lang.Closure), find(java.lang.String), find(masterdetail.Author)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:81)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
at masterdetail.Author$__clinit__closure1$_closure3.doCall(Author.groovy:16)
그래서, 무엇을 할 :
class Author {
def String name
def String email
def BigDecimal price1
def BigDecimal price2
def BigDecimal price3
// static hasMany = [books: Book]
static constraints = {
name nullable:true
email nullable:true
price1(nullable:true,
validator: { val, obj ->
(obj.price2==null) and (obj.price3 == null) })
price2(nullable:true,
validator: { val, obj ->
(obj.price1==null) and (obj.price3 == null) })
price3(nullable:true,
validator: { val, obj ->
(obj.price1==null) and (obj.price2 == null) })
}
static mapping = {
name column: "AuthorName", sqltype:"char", length:25
}
String toString() {
return name
}
def beforeValidate() {
}
}
나는이 오류가?
부울 조건은 '&&'로 anded됩니다. – doelleri
물론, 저는 대개 DELPHI로 프로그래밍하기 때문에 때로는 명백한 실수를 인식하지 못합니다. 감사! – larand
누군가에게 관심이있을 경우를 대비해 예제를 편집하여 작업 버전을 표시했습니다. – larand