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 に答える