2015-08-19 3 views
1

я хочу сделать что-то вроде:Grails 2.5.0 - ограничение быть пустым или следовать проверки

class MyCommand { 
    String name 
    String data 

    static constraints = { 
     name blank: false, size: 3..64 
     data (blank: true) || (blank: false, size: 3..64) 
    } 
} 

где данные либо пустым или следует проверка таких как ограничение размера, если оно не пусто. Можно ли это сделать без специальной проверки?

+1

Нет, это не возможно без обычной пользовательской проверки. –

+0

Есть ли способ запускать «данные» через регулярную проверку подлинности грааля в пользовательской проверке? – Anonymous1

ответ

4

Было бы нетривиально использовать другие ограничения в рамках ограничения валидатора. Делегат закрытия ограничений - ConstrainedPropertyBuilder, который вы можете прочитать, чтобы понять сложность.

Но это не имеет значения, так как EmailConstraint использует Apache EmailValidator, который вы можете использовать в своем валидаторе. Вот EmailValidator в действии:

@Grab('commons-validator:commons-validator:1.4.1') 

import org.apache.commons.validator.routines.EmailValidator 

def emailValidator = EmailValidator.getInstance(); 

assert emailValidator.isValid('[email protected]') 
assert !emailValidator.isValid('an_invalid_emai_address') 

Вы можете использовать EmailValidator в собственных validator так:

import org.apache.commons.validator.routines.EmailValidator 

class MyCommand { 
    String name 
    String data 

    static constraints = { 
     name blank: false, size: 3..64 
     data validator: { 
      if(it) { 
       EmailValidator 
        .getInstance() 
        .isValid(it) 
      } else { true } 
     } 
    } 
} 
Смежные вопросы