JavaScript と JSON¶
JavaScript¶
XitrumはjQueryを内包しています。
またいくつかのjsXXXヘルパー関数を提供しています。
JavaScriptフラグメントをViewに追加する方法¶
アクション内では jsAddToView
を呼び出します。(必要であれば何度でも呼び出すことができます):
class MyAction extends AppAction {
def execute() {
...
jsAddToView("alert('Hello')")
...
jsAddToView("alert('Hello again')")
...
respondInlineView(<p>My view</p>)
}
}
レイアウト内では jsForView
を呼び出します:
import xitrum.Action
import xitrum.view.DocType
trait AppAction extends Action {
override def layout = DocType.html5(
<html>
<head>
{antiCsrfMeta}
{xitrumCss}
{jsDefaults}
</head>
<body>
<div id="flash">{jsFlash}</div>
{renderedView}
{jsForView}
</body>
</html>
)
JavaScriptを直接レスポンスする方法¶
Javascriptをレスポンスする場合:
jsRespond("$('#error').html(%s)".format(jsEscape(<p class="error">Could not login.</p>)))
Javascriptでリダイレクトさせる場合:
jsRedirectTo("http://cntt.tv/")
jsRedirectTo[LoginAction]()
JSON¶
Xitrumは JSON4S を内包しています。 JSONのパースと生成についてはJSON4Sを一読することを推奨します。
ScalaのcaseオブジェクトをJSON文字列に変換する場合:
import xitrum.util.SeriDeseri
case class Person(name: String, age: Int, phone: Option[String])
val person1 = Person("Jack", 20, None)
val json = SeriDeseri.toJson(person)
val person2 = SeriDeseri.fromJson(json)
JSONをレスポンスする場合:
val scalaData = List(1, 2, 3) // An example
respondJson(scalaData)
JSONはネストした構造が必要な設定ファイルを作成する場合に適しています。
参照 設定ファイルの読み込み