如何在电梯中使用现场READONLY

时间:2012-11-23 21:18:21

标签: scala lift

我有一个字段,我想要只读并具有默认值。

这里我到现在为止:

    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(有效),但用户在创建/编辑实体时无法编辑该字段。

非常感谢任何建议

2 个答案:

答案 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
}

这就是你要找的东西吗?

相关问题