2011-10-24 16 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