liftweb フレームワークの UI で将来の応答を表示したい。
以下はLoggable
スニペットmethod ( )processRequest
ですtextarea
SetHtml
Thread.sleep
27 def render = {
45 def processRequest() : JsCmd = {
46
47 val future_ : LAFuture[String] = new LAFuture()
48
49 val urlRequest = url(request)
51 val future = Http(urlRequest OK as.String)
57
58 future onSuccess {
59 case json =>
60 resp = json
61 logger.info(s"[onSuccess] response => ${json}")
62 SetHtml("response", Text(resp+"")) //FIXME
63 logger.info(s"[onSuccess] response => ${json}") //works fine
64
65 }
66
67 future onFailure {
68 case exception =>
69 logger.info(s"${exception.getMessage()}")
70 }
71 Thread.sleep(2000) //TEMPORARY FIX
72 logger.info("[outside] response => ${resp}")
73 SetHtml("response", Text(resp)) //it works in blocking mode
74 }
77 "@requestid" #> text(requestid, s => requestid = s) &
78 "@request" #> text(request , s => request = s) &
79 "@response" #> textarea(responseString, s=>responseString = s) &
81 "@processreq" #> ajaxSubmit("Send Request", processRequest)
75 }
SetHtml
onSuccess
私はそこにjsonを取得しますが、内部では機能しません。次のドキュメントSetHtml
があります。
指定された ID を持つノードのコンテンツを content によって指定されたマークアップに置き換えます
これは、Javascript で DOM オブジェクトの innerHtml プロパティに新しい値を割り当てることに似ています。
このアプリはすべてgithub で入手できます。
私が欲しいのはSetHtml
、リクエスト自体がajaxを介して行われる将来のオブジェクトを処理する際の解決策です。