Лучшая практика Grails для проверки строки как целочисленного диапазона - PullRequest
0 голосов
/ 07 июня 2011

Я пытаюсь подтвердить выбор. Обычно я бы использовал inList, поскольку SELECT подразумевает фиксированное количество строк, но мне было интересно, есть ли что-то более элегантное. В этом случае у меня есть форма с входом SELECT со значениями 0-24, соответствующими следующим 24 месяцам.

В моем cmdObject у меня есть

class FormCommand {

  String startSlot

  static constraints = {
      // startSlot(nullable:false, blank:false, range:0..24)
      startSlot(nullable:false, blank:false, 
                validator: { val, obj -> val.toInteger() < 25})
  }
}

Я бы хотел использовать оператор range: 0..24, но из того, что я понимаю, диапазоны не относятся к строкам, сгенерированным формой.

Есть ли предпочтительный способ приведения / связывания входящей строки в int, чтобы я мог использовать диапазон: 0..24? Или есть другой способ справиться с этим?

Я мог бы сделать

    inList: [ "0", "1", /* type them all out */,  "24" ]

или напишите несколько более надежных пользовательских валидаторов, но мне интересно, есть ли более удачное решение / grails.

Спасибо.

Ответы [ 4 ]

2 голосов
/ 07 июня 2011

Вы можете использовать диапазоны со строками, например ...

class FormCommand {

  String startSlot

  static constraints = {
      startSlot(nullable: false, size: '0'..'24')
  }
}
1 голос
/ 07 июня 2011
class FormCommand {

  Integer startSlot

  static constraints = {
      startSlot(nullable: false, size: 0..24)
  }
}
0 голосов
/ 09 июня 2011

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

class FormCommand {

  Integer startSlot

  static constraints = {
     startSlot(nullable: false, range: 0 .. 24)
  }
}

Документация в (http://grails.org/doc/latest/ref/Constraints/range.html) сбила меня с толку, когда говорилось, что она может быть использована для чего-либо со следующим / предыдущим. Я не знал, что вы могли бы неявно преобразовать param.startSlot в Integer, просто указав поле как Integer.

Спасибо.

0 голосов
/ 08 июня 2011

Я бы использовал диапазон. Смотри документацию

http://grails.org/doc/1.0.x/ref/Constraints/range.html

Я думаю, что размер для строки и больше как длина вещь

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