定義済みオブジェクト
定義済みオブジェクト
オブジェクトを格納するスコープは、Mayaa がスクリプトから操作できるオブジェクトとして定義しています。たとえば request スコープに格納されている message という名前の属性を操作するには2つの簡略表記があります。
request.messagerequest['message']
どちらも意味的には同じですが、前者は属性としてわかりやすい表記、後者は動的な名前を扱える表記として使い分けられます。属性はスコープによって読み出し専用と書き込み可能の2種類があります。
スコープのメソッドは次のものが用意されています。上記簡略表記は内部的に getAttribute と setAttribute を使います。
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:exec や m:for などで宣言した属性はそのタグが終わるまでの間のみ有効です。スクリプトの var で宣言した変数は page スコープの属性として扱われます。
■param: リクエストパラメータスコープ
リクエスト全体で共有される読み出し専用スコープです。Servlet の request スコープのパラメータ (getParameter) にあたります。同じ名前のパラメータが複数ある場合には、一番先頭のものひとつを返します。
■binding: コンポーネント引数スコープ
コンポーネント引数の読み出し専用スコープです。コンポーネントではない場合には param と同じ値を戻します。
■header: リクエストヘッダスコープ
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 します。