定義済みオブジェクト

定義済みオブジェクト

オブジェクトを格納するスコープは、Mayaa がスクリプトから操作できるオブジェクトとして定義しています。たとえば request スコープに格納されている message という名前の属性を操作するには2つの簡略表記があります。

  • request.message
  • request['message']

どちらも意味的には同じですが、前者は属性としてわかりやすい表記、後者は動的な名前を扱える表記として使い分けられます。属性はスコープによって読み出し専用と書き込み可能の2種類があります。

スコープのメソッドは次のものが用意されています。上記簡略表記は内部的に getAttributesetAttribute を使います。

getAttribute(String name)
指定名の属性をスコープから取得します。スコープ内になければ null を返します。
setAttribute(String name, Object value)
指定名の属性をスコープにセットします。読み込み専用スコープの場合は例外を投げます。(org.seasar.mayaa.impl.cycle.scope.ScopeNotWritableException) removeAttribute(String name)
指定名の属性をスコープから削除します。読み込み専用スコープの場合は例外を投げます。(org.seasar.mayaa.impl.cycle.scope.ScopeNotWritableException) isAttributeWritable()
スコープが書き込み可能かどうかを true/false で返します。 hasAttribute(String name)
指定名の属性がスコープに格納されているかどうかを true/false で返します。 iterateAttributeNames()
スコープが持つ属性の名前 (String) の Iterator を返します。 newAttribute(String name, Class attributeClass)
指定名の属性がスコープから取得します。スコープ内にない場合の処理はスコープごとに異なりますが、一般的には attributeClass のインスタンスを生成し、スコープに指定名でセットしてから返します。

Mayaa 標準のスコープは次の 8 つです。

■application: アプリケーションスコープ

アプリケーション全体で共有されるスコープです。Servlet の application スコープにあたります。

■session: セッションスコープ

セッション全体で共有されるスコープです。Servlet の session スコープにあたります。

■request: リクエストスコープ

リクエスト全体で共有されるスコープです。Servlet の request スコープの属性 (get/setAttribute) にあたります。

getContextPath()
WEBアプリケーションコンテキストのパス部を返します。
("http://localhost/mayaa/index.html"にアクセスされた場合には"/mayaa")
getRequestedPath()
リクエストされたパス文字列を返します。
("http://localhost/mayaa/index.html"にアクセスされた場合には"/index.html")
getPageName()
リクエストされたページ名を返します。
("http://localhost/mayaa/index.html"にアクセスされた場合には"/index")
getRequestedSuffix()
リクエストで明示されたページ接尾辞を返します。
getExtension()
リクエストされたページ拡張子を返します。
("http://localhost/mayaa/index.html"にアクセスされた場合には"html")
getMimeType()
リクエストされたパスより類推できるMIME型を返します。
getLocales()
リクエストのロケール (java.util.Localeの配列) を返します。
getParamValues()
リクエストパラメータを配列として持つスコープを取得します。このスコープは、同じ名前のパラメータがひとつのみの場合には長さ 1 の配列を返します。
getHeaderValues()
HTTP ヘッダを配列として持つスコープを取得します。このスコープは、同じ名前の HTTP ヘッダがひとつのみの場合には長さ 1 の配列を返します。

■page: ページスコープ

ページ内とタグの範囲で共有されるスコープです。JSP の NESTED 変数スコープにあたります。m:beforeRender で宣言した属性はページの描画が終わるまで有効ですが、m:execm:for などで宣言した属性はそのタグが終わるまでの間のみ有効です。スクリプトの var で宣言した変数は page スコープの属性として扱われます。

■param: リクエストパラメータスコープ

リクエスト全体で共有される読み出し専用スコープです。Servlet の request スコープのパラメータ (getParameter) にあたります。同じ名前のパラメータが複数ある場合には、一番先頭のものひとつを返します。

■binding: コンポーネント引数スコープ

コンポーネント引数の読み出し専用スコープです。コンポーネントではない場合には param と同じ値を戻します。

HTTP ヘッダの読み出し専用スコープです。同じ名前のパラメータが複数ある場合には、一番先頭のものひとつを返します。

■_ (アンダースコア): 標準スコープ

スコープを指定しない場合と同じ動作をするスコープです。JavaScript の予約語に含まれる名前のパラメータを探索するために使用します。

response: レスポンス

ブラウザへ返す情報を扱うオブジェクトです。Servlet の response にあたります。 特殊な場合を除いて直接操作しないことを推奨します

レスポンスのメソッドのうち、使用する可能性が比較的高いものは以下の通りです。

setContentType(String contentType)
コンテンツタイプ (MIME 型およびエンコーディング情報) を設定します。
setStatus(int code)
HTTP ステータスコードを設定します。(200, 404, 500 など)
addHeader(String name, String value)
レスポンスのヘッダを追加します。
setHeader(String name, String value)
レスポンスのヘッダを設定します。同名のヘッダが設定されている場合は上書きします。
getOutputStream()
実際の出力となる OutputStream を取得します。
getWriter()
バッファされた Writer を取得します。
flush()
レスポンスのバッファを強制的に出力します。

グローバル関数

Mayaa 独自の関数として、forward, redirect, error, load の 4 つ (引数の違うものも含めると 6 つ) が定義されています。これらは Mayaa 上のスクリプトから呼び出せます。

forward(String path)
リクエストを指定したパスに転送します。
redirect(String path)
指定したパスへのリダイレクト応答を送信します。
error(int errorCode)
指定した HTTP ステータスコードの HTTP エラー応答を送信します。(403, 404, 500 など)
error(int errorCode, String message)
指定した HTTP ステータスコード、エラーメッセージの HTTP エラー応答を送信します。
load(String scriptPath)
指定したパスのスクリプトを読み込み、実行します。文字コードは UTF-8 とします。exec プロセッサの src 属性を使う場合と同様です。
load(String scriptPath, String encoding)
指定したパスのスクリプトを指定した文字コードで読み込み、実行します。exec プロセッサの src 属性、encoding 属性を使う場合と同様です。
throwJava(Throwable t)
引数 t の例外を throw します。