Я использую упор на записи записи, и я хочу применить некоторые преобразования на поле всякий раз, когда я устанавливаю или получаю его значение. Например, для StringField я хочу автоматически установить его в регистр в объекте Record.Как применять преобразования/фильтры на лифте записи записи перед записью/чтением ее значения
object someField extends StringField(this, 64) {
...
// how do I apply transformations here?
...
}
В Lift Mapper есть метод setFilter
, который делает именно это, но я не могу найти его эквивалент в записи. В Mapper это выглядит следующим образом:
object someField extends MappedString(this, 64) {
...
override def setFilter = trim _ :: toUpper _ :: super.setFilter
...
}
варианта Пар Я рассматриваю является:
- переопределения
set
метод, но есть многие из них, я боюсь не полностью переопределить подмножество необходимых методов , поэтому я не могу представить себе последствий. :) - используя жизненный цикл обратные вызовы - похоже overkill.
Любая помощь приветствуется. Спасибо;)
кажется, что Стрингфилд также имеет 'метод setFilter', а также, по крайней мере, в соответствии с API: http://liftweb.net/api/25/api/#net. liftweb.record.field.StringField. Подпись - 'setFilter: List [(ValueType) ⇒ ValueType]'. Разве это не сработает? – jcern
@jcern, вы абсолютно правы, я не знаю, как я это пропустил. Я честно проверил этот метод, возможно, было слишком поздно, и мой мозг сдавался :) Большое спасибо. –