2012-11-23 19 views
2

我有一個字段,我希望是隻讀的並且具有默認值。如何在電梯中創建字段READMELY

在這裏我有什麼至今:

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

明白了,

只是覆蓋_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

的特質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 
} 

這就是你正在找?

+0

這不正是我需要的。 該字段必須顯示,但必須是不可編輯的,即文本框必須包含默認值,但必須禁用,以便用戶無法更改。 – Dahdahm

+0

應該覆寫writePermission_? = false'並且覆蓋readPermission_? = true'而不是'override def writePermission_? = false'和'override def readPermission_? =真'?這對我來說很有用。 –