0
我正在使用電梯記錄持久性,並且每當設置或獲取其值時,我都想在字段上應用一些轉換。例如,對於StringField,我想在Record對象中自動將它設置爲小寫。如何在寫入/讀取其值之前在電梯記錄字段上應用轉換/過濾器
object someField extends StringField(this, 64) {
...
// how do I apply transformations here?
...
}
在電梯映射器有一個方法setFilter
這正是這麼做的,但我找不到它的記錄等同。在映射它看起來像這樣:
object someField extends MappedString(this, 64) {
...
override def setFilter = trim _ :: toUpper _ :: super.setFilter
...
}
夫婦選項有:
- 覆蓋
set
方法,但也有很多人,恐怕不完全覆蓋的所需的方法集,所以我不能預見後果。 :) - 使用生命週期回調 - 似乎是矯枉過正。
任何幫助表示讚賞。感謝;)
看來StringField也有一個'setFilter'方法爲好,至少根據API:http://liftweb.net/api/25/api/#net。 liftweb.record.field.StringField簽名是'setFilter:List [(ValueType)?ValueType]'。這不行嗎? – jcern
@jcern你是絕對正確的,我不知道我是如何錯過它的。我誠實地檢查了這種方法,可能已經太晚了,我的大腦放棄了:)非常感謝。 –