2011-10-24 51 views
2

我有以下形式:SCALA电梯 - AJAX形式多值

<form class="lift:form.ajax"> 
    <input type="hidden" class="lift:StreamIn" id="path" value="PATH" /> 
    <input type="submit" value="" /> 
</form> 

其中送入:

object StreamIn { 

    def render = SHtml.onSubmit(path => { 

     StreamServer ! path 

    }) 

} 

case class StreamItem(user: String, path: String, level: String, room: String) 

object StreamServer extends LiftActor with ListenerManager { 

    private var streams: List[StreamItem] = Nil 

    def createUpdate = streams 

    override def lowPriority = { 

     case stream: String if stream.length > 0 => 

      streams :+= StreamItem("James", stream, "_1", "demo-room"); 
      updateListeners() 

    } 

} 

我正在寻找的是传递多个值的StreamServer的一种方式有多个输入。

因此,它们将从表单中传递,而不是静态字符串值“James”,“_1”和“demo-room”。

在此先感谢您的帮助,非常感谢:)

回答

3

它是确定有你的Ajax表单上有几处输入字段? 如果是这样,如何:

<form class="lift:form.ajax"> 
    <div class="lift:StreamIn"> 
    <input type="text" name="path" /> 
    <input type="text" name="user" /> 
    <input type="text" name="level" /> 
    <input type="text" name="room" /> 
    <input type="hidden" name="hidden" /> 
    </div> 
</form> 

更新时间:

object StreamIn { 
    case class StreamItem(user: String, path: String, level: String, room: String) 
    def render = { 
    var path= "" 
    var user= "" 
    var level= "" 
    var room= "" 
     def process(): JsCmd= { 
     val message= StreamItem(user, path, level, room) 
     StreamServer ! message 
     } 

    "name=path" #> SHtml.onSubmit(path= _) & 
    "name=user" #> SHtml.onSubmit(user= _) & 
    "name=level" #> SHtml.onSubmit(level= _) & 
    "name=room" #> SHtml.onSubmit(room= _) & 
    "name=hidden" #> SHtml.hidden(process) 

    } 
} 

,并更改为低优先级:

override def lowPriority = { 
    case StreamItem(userIn, pathIn, levelIn, roomIn) => { 
    streams :+= StreamItem(userIn, pathIn, levelIn, roomIn); 
    updateListeners() 
    } 

} 

我错过了一些}但我希望你的想法,您可能可以省略某些字段,例如房间和关卡,如果您有可用的字段,则可以使用RequestVar访问它们。

你可以做更多的阅读关于Ajax形式在Simply Lift Book

希望它可以帮助

+0

感谢您的帮助,definatly步入正轨了。我已经完成了上面提到的更改,但在编译时出现以下错误:“缺少扩展函数的参数类型”这会发生在每行上:“name = path”#> SHtml.onSubmit(path => path = _)等 – jhdevuk

+0

这应该是“缺少'扩展'功能的参数类型” – jhdevuk

+0

好吧,我更新了对象StreamIn片段以摆脱该编译器错误并编辑了html以添加隐藏字段 – fmpwizard