Привязка данных Grails интерпретирует пустые значения String ("") как ноль (0) - PullRequest
0 голосов
/ 16 сентября 2009

Этот вопрос касается изменения способа, которым привязка данных Grails обрабатывает преобразование строки в целое число.

Рассмотрим следующий объект домена:

class Foo {
  String name
  Integer price
}

Кроме того, предположим, что объект домена заполнен параметрами HTTP-запроса:

def foo = new Foo(params).save()

Приведенный выше метод save () завершится ошибкой, если params.price == "" (пустая строка). Я хотел бы изменить это поведение глобально, чтобы пустая строка анализировалась как ноль (0) при преобразовании строки в целое число в привязке данных Grails. Как мне этого добиться?

Ответы [ 3 ]

2 голосов
/ 21 сентября 2009

добавлен фильтр, см. Раздел 5.5.1 События и автоматическая отметка времени в документации Grails (http://grails.org/doc/1.1.x/index.html)

   def beforeInsert = {
       if (price == '') { price = 0}
   }
0 голосов
/ 01 октября 2009

вместо этого попробуйте это ограничение

static constraints = {
    price(validator: {val, obj ->
        if (val == '' || val == 0) {
            obj.price = 0
            return true
        } else if (val < 1) {
            return false;
        }
    })
}
0 голосов
/ 16 сентября 2009

Вместо изменения привязки данных, почему бы просто не написать свой собственный установщик? В установочном тесте, чтобы увидеть, является ли строка пустой, если для нее установлена ​​цена 0. Если это не сделать обычное целочисленное преобразование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...