2

我有一个字段,我希望它是只读的并且有一个默认值。

这是我到目前为止所拥有的:

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

任何建议将不胜感激

4

2 回答 2

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}}/>)}
于 2012-11-26T17:58:15.407 回答
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
}

那是你要找的吗?

于 2012-11-23T22:22:55.080 回答