2014-01-28 25 views
1

我有一个记录类这样的:如何构建与CssBoundLiftScreen和电梯记录选择字段?

class Address extends Record[Address] { 
    def meta = Address 

    object countryCode extends OptionalStringField(this, None) { 
    override def name = "Country" 

    var c = "" // this isn't doing anything but I set it up just to build the simple SHtml.select 
    override def toForm = Full(SHtml.select(List(("usa", "usa"),("ca", "ca")), Empty, c = _)) 
    } 
    ... 
} 

object Address extends Address with MetaRecord[Address] { } 

,然后这种形式显示是这样的:

object FormPage extends CssBoundLiftScreen { 
    def formName = "MyForm" 

    val record = Address.createRecord 

    field(record.countryCode, FieldBinding("addressCountryCode") 
} 

在这样的一个模板:

<div class="form"> 
    <div class="lift:FormPage"> 
    <div class="fields"> 
     <fieldset> 
     <div id="MyForm_addressCountryCode_field"></div> 
     </fieldset> 
    </div> 
    </div> 
</div> 

这是正确的使用Record/CssBoundLiftScreen进行除简单文本字段以外的输入的方法?它看起来并不像这个选择会更新或创建一个正确的记录。我将如何让select显示记录字段的值?

回答

1

如果你看一下scaladaoc为OptionalStringField,也有通过超SettableValueHolder提供的,并提供了访问底层值两种方法:getset

画质设置(在:选项[ MyType]):选项[MyType]

将该字段的值设置为给定值。注意:由于设置字段可能会失败(返回非Full),如果无法设置字段,此方法将返回defaultValueBox。

得到:选项[MyType的]

获得价值

我怀疑这样的事情应该为你工作:

override def toForm = Full(SHtml.select(List(("usa", "usa"),("ca", "ca")), get, v => set(Some(v))))