を働いていない私は私のページに次のAJAXフォームを持っている:Scalaのリフト - AJAXフォームが正しく
<form class="lift:form.ajax">
<div class="lift:StreamInput">
<input type="hidden" name="path" />
<input type="hidden" name="user" />
<input type="hidden" name="level" />
<input type="hidden" name="room" />
</div>
<input type="submit" value="" />
</form>
入力フィールドの値がDBを呼び出すスニペットによって設定された各。フォームは次のように値を送信するためのものだ提出され
:
import comet.StreamServer
object StreamInput {
def render = {
var path = ""
var user = ""
var level = ""
var room = ""
def process(): JsCmd = {
val message = comet.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 = _)
}
}
そこからあなたが見ることができるように、処理方法を実行することになっていますが、フォームデータから「StreamItem」を構築これStreamServerに含まれ、次にリスナーを更新するStreamServerにオブジェクトを送信する場合のクラスである:
case class StreamItem(user: String, path: String, level: String, room: String)
class StreamComet extends CometActor with CometListener {
private var streams: List[StreamItem] = Nil
def registerWith = StreamServer
override def lowPriority = {
case v: List[StreamItem] =>
streams = v;
reRender();
}
def addStreams(): String = {
var script = ""
streams.foreach{stream =>
script += """
STREAMMOD.stream_view.add_stream({
path : '""" + stream.path + """',
level : '""" + stream.level + """'
})
"""
}
return script
}
def render = {
OnLoad(JsRaw(
addStreams()
).cmd)
}
}
object StreamServer extends LiftActor with ListenerManager {
private var streams: List[StreamItem] = Nil
def createUpdate = streams
override def lowPriority = {
case StreamItem(user, path, level, room) => {
streams :+= StreamItem(user, path, level, room);
updateListeners()
}
}
}
最終結果がページに表示するデータを送信whcih呼び出されるjavascript関数であるべきです。
データがそれほど遠くに届かないようだが、フォームを送信しても何も起こらない。
私には何が欠けていますか?どんな助けもありがとうございます。事前に感謝します:)
http://simply.liftweb.net/index-4.8.html#toc-Section-4.8 – Debilski
私は特定の問題を発見しました。フォームからの値がプロセスメソッドに正しく渡されていないようですStreamInput内にあります。何が欠けているのか、間違っているのは、これらの値が失われたということですか? – jhdevuk
私は主な問題は、指定された 'process'メソッドのコールバックがないということです。 – Debilski