我有一个字段,我想要只读并具有默认值。
这里我到现在为止:
object passwd extends MappedString(this, 20)
{
override def defaultValue = "XXX" + Random.alphanumeric.take(12).mkString // some default value
// readOnly = true // Or something similar???
}
我尝试覆盖toHtml,asHtml,toForm,displayHtml,但它们都改变了视图或标签或其他内容。
我只想自动生成defaultValue(有效),但用户在创建/编辑实体时无法编辑该字段。
非常感谢任何建议
答案 0 :(得分:2)
知道了,
只需覆盖_toForm并禁用输入元素:
import net.liftweb.http.S
override def _toForm =
S.fmapFunc({s: List[String] => this.setFromAny(s)}){name =>
Full(<input disabled='disabled' type='text' id={fieldId} maxlength={maxLen.toString}
name={name}
value={is match {case null => "" case s => s.toString}}/>)}
答案 1 :(得分:1)
特征MappedField
定义方法writePermission_?
和readPermission_?
:
/**
* Given the current execution state, can the field be written?
*/
def writePermission_? = false
/**
* Given the current execution state, can the field be read?
*/
def readPermission_? = false
所以你可以用
覆盖这些object passwd extends MappedString(this, 20) {
override def defaultValue = "XXX" + Random.alphanumeric.take(12).mkString // some default value
override writePermission_? = false
override readPermission_? = true
}
这就是你要找的东西吗?