2015-07-06 3 views
0

У меня есть домен Grails, содержащий поле ZipCode:Подтвердить ZipCode в домене Grails?

class SomeClass { 

String zipCode 

} 

действительный почтовый индекс в моем опре является то, что она является либо пустой, либо содержит только из цифр.

Как проверить, является ли поле zipCode пустым или действительным почтовым индексом, содержащим только числа?

+1

Это зависит от того, что вы считаете «действующим» почтовым индексом. Я предполагаю, что вы просто имеете дело с адресами США, так как вы говорите «почтовый индекс» и «только цифры». Однако, даже если вы подтвердите, что он содержит только номер и составляет ровно 5 цифр, вы все еще не знаете, является ли это технически корректным почтовым индексом для города/штата/округа. Если вам нужен этот уровень проверки, вам нужно использовать либо данные, предоставленные USPS (вам нужно подписаться на базу данных и заплатить за нее), либо использовать такую ​​услугу, как Cdyne. Итак, обновите свой вопрос, чтобы сказать, что вы подразумеваете под «действительным» для получения наилучшего ответа. –

+0

какая у вас проблема? любая ошибка? любая конкретная проблема? и что вы пробовали? –

+0

Допустимый почтовый индекс в моем def состоит в том, что он либо пуст, либо содержит только числа. –

ответ

1
class SomeClass { 

String zipCode 

static constraints = { 
    zipCode blank:true, validator:{ it ==~ /\d+/ } 
} 
} 
+0

Итак, исходя из этого, действительный почтовый индекс? 7. Я так не думаю. –

+1

Как только ОП не представил свои первоначальные попытки, я предполагаю, что он не знает, как определить ограничения/валидаторы вообще. Практически нет такой вещи, как «действительный почтовый индекс». Существуют существующие почтовые индексы и несуществующие, хотя и совершенно правильные :), поэтому наилучшим способом было бы проверить правильность таблицы поиска – injecteer

+0

@JoshuaMoore. Как вы думаете, здесь неправильно? –

0

Простой, легкий.

String zipCode 

static constraints = { 
    zipCode(nullable:false, blank:false,validator:{zip, address -> 
     //Check for 9 digit with - or 5 digit or just 9 digits 
     if(zip ==~ /^(\d{5}-\d{4})|(\d{5})|(\d{9})$/) { 
      return true 
     } 
     else { 
      return "invalidZipFormat" 
     } 
    }) 


} 
+0

Я просто хочу проверить, что почтовый индекс либо пустой, либо не пустой, он должен содержать только числа. –

Смежные вопросы