JAXSON 業務アプリケーションフレームワーク
トップ

インストール

ドキュメント
チュートリアル
開発ガイド
トランザクション管理
データベース接続
データベースアクセス
バリデーション
セキュリティ
エクセルファイル出力
JavaScriptリファレンス
API doc

ダウンロード
jaxson-2.1.zip

JavaScriptリファレンス


前提条件
jaxson.jsはPrototype を使用していますのでHTMLファイルのhead要素に以下の順でインポートします。
<script type="text/javascript" src="/**javascript-path**/prototype.js"></script>
<script type="text/javascript" src="/**javascript-path**/jaxson.js"></script>
'javascript-path'の部分は環境に合わせて変更してください。 そのHTMLが使用するその他のJavaSctiptはこの後に記述します。
下記のサンプルで使われている'$(A)'はPrototypeで定義されている関数で idがAである要素を返しますが、 これらの詳細はPrototypeのドキュメントを参照してください。
HTMLの文字エンコーディングはUTF-8を前提としています。 またDOMを使用するためにHTMLファイルはXHTMLに準拠していることが必要となります。 既存ページに組み込む場合は結構な手間となるかもしれませんが これを機会に直してしまいましょう。

関数一覧
doAction アクションを実行します。
doForm フォームの内容をパラメータとしてアクションを実行します。
toAttributeArrays オブジェクトの配列からオブジェクトの属性を配列として保持するひとつのオブジェクトを作成します。
forward 初期データをセットしてページを移動します。
formToObject フォームの内容を格納するオブジェクトを構築します。
pushObject オブジェクトをセッションに保存します。
pushForm フォームの内容をセッションに保存します。
popObject セッションに保存したオブジェクトを取得します。
popPageData セッションに保存したオブジェクトを取得してページに読込みます。
loadToDocument オブジェクトをページに読込みます。
setElementValue HTML要素に値をセットします。
setSelectValue オブジェクトをSELECT要素に読込みます。
createTableRows オブジェクトの配列をテーブルに読込みます。
createListItems 配列をリストに読込みます。
toAbsolutePath 相対パスを絶対パスに変換します。
toActionPath アクション名を絶対パスに変換します。
イベントハンドラ イベント発生時に呼ばれる定義済の関数です。
trim 文字列の前後の空白を削除します。
ltrim 文字列の先頭の空白を削除します。
rtrim 文字列の最後の空白を削除します。
toCashString 数値を3桁ごとにカンマを付加した文字列を作成します。
numberValue 数値を表現するカンマ付き文字列の数値を取得します。
setupFilteredField テキストフィールドの入力を指定したパターンに強制するように設定します。
setupCashField テキストフィールドを金額入力用に設定します。
validateDate 日付の妥当性を検証します。

doAction(action, param, successFunc)
概要 : アクションを実行します。
name : アクション名
param : アクションのパラメータとなるオブジェクト
successFunc : アクション成功時に行う関数

アクションは非同期で呼び出されますので、 この関数を呼び出した後に何らかの処理を行っても アクションが完了している保証はありません。 アクションが完了していることを前提とする処理は 必ずsuccessFuncで行うようにします。
successFuncには引数としてアクションの実行結果が渡されます。

例 : 'SearchCustomer'アクションを呼び出し、 その結果を'customerTable'に表示します。
doAction('SearchCustomer', { costomerID : "0001" }, function(customerList) {
    setElementValue($("customerTable"), customerList);
});

toAttributeArrays(objArray)
概要 : オブジェクトの配列からオブジェクトの属性を配列として保持するひとつのオブジェクトを作成します。
objArray : オブジェクトの配列
戻り値 : 属性を配列として保持するオブジェクト

オブジェクトの配列から、 そのオブジェクトの属性を配列として保持するひとつのオブジェクトを作成します。
複数のオブジェクトをサーバに送信する場合、 このメソッドにより各属性値を配列として送信します。
アクションクラスはこれらの属性をStringの配列として受け取ります。

forward(page, obj)
概要 : 初期データを指定してページを移動します。
page : 移動するページ
obj : 移動するページの初期データとなるオブジェクト

objをセッションに保存してpageに移動します。
ページ移動後に loadToDocument により初期データがページに読込まれます。

例 : nextPageDataを初期データとして"nextPage.html"に移動します。
forward("nextPage.html", nextPageData);

formToObject(form)
概要 : フォームの内容を格納したオブジェクトを構築します。
form : FORM要素
戻り値 : 作成されたオブジェクト

指定したフォームの子要素の内容を保持するオブジェクトを作成します。
要素の内容はnameもしくはid属性を属性名として格納されます。 nameとidの両方を持つ要素の場合はname属性が優先され、 同じname値を持つ複数の要素が存在する場合は値を配列として格納します。

pushObject(name, obj, successFunc)
概要 : オブジェクトをセッションに保存します。
name : セッションキー名
obj : 保存するオブジェクト
successFunc : 処理後に実行する関数

セッションにオブジェクトをキー名をnameとして保存します。
オブジェクトはJSON文字列として保存するので、 サーバ側で保存されたデータを使用するには注意が必要です。
nameにnullを渡した場合は、現在のページの絶対パスをキー名として登録します。
nameにあるページの絶対パスを指定すると そのページを読込むと保存したオブジェクトを初期データとしてドキュメントに読込みます。 popPageData を参照してください。

例 : objを初期データとしてfoo.htmlに移動します。
pushObject(toAbsolutePath("foo.html"), obj, function() {
    location = "foo.html";
});

pushForm(name, form, successFunc)
概要 : フォームの内容をセッションに保存します。
name : セッションキー名
form : フォーム要素
successFunc : 処理後に実行する関数

formToObject でフォームの内容格納するオブジェクトを作成し、 pushObject でそれをセッションに格納します。

popObject(name, successFunc)
概要 : セッションに保存したオブジェクトを取得します。
name : セッションキー名
successFunc : 処理後に実行する関数

nameにnullを渡した場合は、現在のページの絶対パスをキー名として登録します。
取り出したオブジェクトはセッションからは削除されます。
取得したオブジェクトはsuccessFuncの引数として渡されます。 この関数はオブジェクトを返さないことに注意してください。

popPageData(name, successFunc)
概要 : セッションに保存したオブジェクトを取得して画面に読込みます。
name : セッションキー名
successFunc : 処理後に実行する関数

nameにnullを渡した場合は、現在のページの絶対パスをキー名として登録します。
取り出したオブジェクトはセッションからは削除されます。
successFuncを指定した場合は取得したオブジェクトはsuccessFuncの引数として渡されます。
画面の読込みについては loadToDocument を参照してください。
取得したオブジェクトは同時に document.initialdata に保存されますので、画面を初期値に戻す等に使用することができます。
この関数はページロード時に自動的に呼ばれます。 ページの絶対パスをキーとしてセッションにオブジェクトを保存しておくと ページロード時に初期データとして画面に読込まれます。

loadToDocument(obj)
概要 : オブジェクトの内容を画面に読込みます。
name : obj 画面に読込むオブジェクト

オブジェクトの全ての属性に対し、 その属性名をidとして持つ要素を検索して要素にオブジェクトの値を設定します。
フォームとは異なりname属性ではなくid属性であることに御注意ください。
この関数を使用することによりJAVAオブジェクトとHTMLのマッピングを可能としています。
各要素の値設定に関しては setElementValue を参照してください。

setElementValue(element, value)
概要 : HTML要素に値を設定します。
element : HTML要素
value : 設定する値

HTML要素のタイプに合わせて値を設定しますので期待通りの結果になると思いますが、 要素によっては値が特定の型であることを要求するものがあります。 テーブルに関しては createTableRows を、リストに関しては createListItems を参照してください。
HTML要素にvalueFilterという属性で関数をセットしておくと 値設定時に編集することが可能となります。

例 : 3桁毎にカンマを表示するようにする。
金額 : <span id="money"></span>

<script type="text/javascript">
    <!--
    $("money").valueFilter = function(value) {
        return toCashString(value);
    }
    //-->
</script>
金額 :

setSelectValue(select, data, blankOption, optionCreated)
概要 : SELECT要素に値を設定します。
element : SELECT要素
data : 設定する値
blankOption : オプションを作成する場合に空のオプションを先頭に付加するか
optionCreated : OPTION要素に値をセットする関数

dataが配列でない場合はdataと等しい値を持つオプション要素を選択状態にします。
dataが配列の場合はオプション要素を作成します。
この関数の引数もしくはSELECT要素にセットされた'optionCreated'関数で オプションの値とラベルをセットします。
'optionCreated'がセットされていない場合は 値とラベルにdataの要素をそのまま値とラベルにセットします。
optionCreated関数には オプションのインデックス、作成されたOPTION要素、オプションデータが 引数として渡されます。
<select id="testSelect">
</select>

<script type="text/javascript">
    <!--
    // SELECT要素にOPTIONの内容を設定する関数をセット
    $("testSelect").optionCreated = function(index, option, data) {
        option.value = data.userid;
        option.innerHTML = data.username;
    };
    
    // テスト用のオプションデータ
    var optionData = [
        { userid : "0001", username : "東京一郎" },
        { userid : "0002", username : "山田太郎" },
    ];
    
    // SELECTにテストデータをセットします。
    function setOptions() {
        setSelectValue($("testSelect"), optionData);
    }
    //-->
</script>

createTableRows(table, data, rowInserted, cellInserted)
概要 : テーブルにオブジェクトの配列を読込みます。
table : テーブル要素
data : テーブルデータ
rowInserted : 行要素が作成された時に呼ばれる関数
cellInserted : セル要素が作成された時に呼ばれる関数

テーブルデータはオブジェクトの配列を想定していますが、 配列でない場合は要素数が1の配列として扱います。
テーブルにはテーブルヘッダを用意しておき、 テーブルヘッダのセルのidによって表示するオブジェクトの要素が決定されます。
テーブルヘッダがない場合は テーブルデータの最初の要素オブジェクトをテーブルヘッダの代わりとします。
<table id="testTable" border="1">
    <thead>
        <tr>
            <td id="col1">列1</td>
            <td id="col2">列2</td>
            <td id="col3">列3</td>
            <td id="col4">列4</td>
        </tr>
    </thead>
    <tbody></tbody>
</table>

<script type="text/javascript">
    <!--
    // テスト用のテーブルデータ
    var tableData = [
        {col1 : "行1列1", col2 : "行1列2", col3 : "行1列3", col4 : "行1列4" },
        {col1 : "行2列1", col2 : "行2列2", col3 : "行2列3", col4 : "行2列4" },
        {col1 : "行3列1", col2 : "行3列2", col3 : "行3列3", col4 : "行3列4" },
        {col1 : "行4列1", col2 : "行4列2", col3 : "行4列3", col4 : "行4列4" },
        {col1 : "行5列1", col2 : "行5列2", col3 : "行5列3", col4 : "行5列4" }
    ];
    
    // テーブルにテストデータをセットします。
    function setTable() {
        createTableRows($("testTable"), tableData);
    }
    //-->
</script>

列1 列2 列3 列4
テーブル要素に'rowInserted'という属性名で関数を設定しておくと 行が追加される毎にその関数が呼ばれます。 但しこの関数の引数としてrowInsertedを指定した場合は こちらが実行されてテーブル要素にセットした関数は呼ばれません。
'rowInserted'には第一引数として行インデックスが、 第二引数として追加された行要素が、 第三引数として行にセットされるオブジェクトが渡されます。
テーブル要素に'cellInserted'という属性名で関数を設定しておくと セルが追加される毎にその関数が呼ばれます。 但しこの関数の引数としてcellInsertedを指定した場合は こちらが実行されてテーブル要素にセットした関数は呼ばれません。
'cellInserted'には第一引数として行インデックス、 第二引数として列インデックス、 第三引数として追加されたセル要素、 第四引数として現在の行にセットされるオブジェクト、 第五引数としてこのセルに対応するオブジェクトの属性名、 第六引数としてセルにセットされる値が渡されます。 この場合は関数の戻り値がセルの内容としてセットされます。
<table id="testTable" border="1">
    <thead>
        <tr>
            <td id="col1">列1</td>
            <td id="col2">列2</td>
            <td id="col3">列3</td>
            <td id="col4">列4</td>
        </tr>
    </thead>
    <tbody></tbody>
</table>

<script type="text/javascript">
    <!--
    // 行毎の処理
    $("testTable").rowInserted = function(rowIndex, rowElement, rowData) {
        if (rowIndex % 2) {
            Element.setStyle(rowElement, {color : "red" });
        }
    }
    
    // セル毎の処理
    $("testTable").cellInserted =
           function(rowIndex, cellIndex, cellElement, rowData, id, cellValue) {
        if (cellIndex == 3) {
            var t = document.createElement("input");
            t.type = "text";
            t.value = cellValue;
            return t;
        }
    }
    
    // テーブルにテストデータをセットします。
    function setTable() {
        createTableRows($("testTable"), tableData);
    }
    //-->
</script>

列1 列2 列3 列4

createListItems(list, items, itemInserted)
概要 : ulもしくはolのリスト要素ににリストアイテムをセットします。
list : リスト要素
items : リストデータ
itemInserted : アイテム追加時に呼ばれる関数

この関数を実行すると以前のリストアイテムは全て削除されます。
リストデータは配列を想定していますが、 配列でない場合は要素数が1の配列として扱います。
リスト要素に'itemInserted'という属性名で関数を設定しておくと アイテムが追加される毎にその関数が呼ばれます。 但しこの関数の引数としてitemInsertedを指定した場合は こちらが実行されてリスト要素にセットした関数は呼ばれません。
'itemInserted'には第一引数としてリストインデックスが、 第二引数として追加されたアイテム要素が、 第三引数としてアイテムにセットされる値が渡されます。 この場合は関数の戻り値がアイテムの内容としてセットされます。

例 : リストアイテムをテキストフィールドとする
<ol id="list"></ol>

<script type="text/javascript">
    <!--
    $("list").itemInserted = function(index, item, value) {
        var t = document.createElement("input");
        t.type = "text";
        t.id = "list" + index;
        t.value = value;
        return t;
    }
    
    function buttonClicked(array) {
        createListItems($("list"), array);
    }
    //-->
</script>
リストアイテムテスト

    toAbsolutePath(path)
    概要 : 相対パスを絶対パスに変換します。
    path : パス名
    戻り値 : 絶対パス名

    pathの1文字目が'/'である場合は絶対パスが指定されたものとして pathをそのまま返します。

    toActionPath(action)
    概要 : アクション名からアクションの絶対パスを作成します。
    action : アクション名
    戻り値 : アクションの絶対パス名

    common.jsで設定しているグローバル変数 action_path からアクションの絶対パス名を作成します。 従って action_path が正常に設定されていないと正しい値を返しません。
    actionの1文字目が'/'である場合は絶対パスが指定されたものとして actionをそのまま返します。

    イベントハンドラ
    下記の定義済関数はイベント発生時に呼ばれます。 必要に応じて実装してください。

    init()
    ページロード時に呼ばれます。
    ドキュメントは全て読込が終わっていますので 全てのDOM要素を参照する事ができます。
    初期設定の処理はこの関数内で行ってください。

    destory()
    他のページに移動する等でページがアンロードされる時に呼ばれます。
    データの保存やクライアントへの警告等に使用できます。

    onActionError(errorInfo)
    errorInfo : エラー情報
    アクションが例外をスローした場合に呼ばれます。
    デフォルトではアラートでメッセージを表示するようになっていますが、 この関数を上書きすることでエラー時の動作をカスタマイズできます。
    引数として渡されるerrorInfoには以下の情報が格納されています。 例を以下に示します。
    // <div id="message"></div>にメッセージを表示する
    function onActionError(errorInfo) {
        var exception = errorInfo.ERROR;
        if (exception.class == 'SQLException') {
            var message = "データベースエラーが発生しました。エラーコード : " + exception.errorCode;
            $("message").innerHTML = message;
        }
    } 

    errorHandler(requester, request, exception)
    requester : Ajaxリクエストオブジェクト
    request : HTTPリクエスト
    exception : 例外オブジェクト
    Ajaxのリクエストで問題が発生した場合に呼ばれます。
    JavaScript例外の場合とサーバが "2xx" 以外のステータスを返した場合の二つのパターンがあります。
    JavaSctip例外の場合は request は null ですが、 それ以外の場合は exception が null となります。
    デフォルトの実装は以下のようになっています。
    function errorHandler(requester, request, exception) {
        if (exception) {
            alert(requester.url + " の呼出で例外が発生しました。\n" + exception);
        } else {
            alert(requester.url + " の呼出に失敗しました。\nステータス : " + request.status);
        }
    }

    trim(str)
    概要 : 文字列の前後の空白を削除します。
    str : 対象文字列
    戻り値 : 空白を削除した文字列

    指定した文字列の前後の0文字以上の連続する空白を削除した文字列を返します。

    ltrim(str)
    概要 : 文字列の先頭の空白を削除します。
    str : 対象文字列
    戻り値 : 空白を削除した文字列

    指定した文字列の先頭から0文字以上の連続する空白を削除した文字列を返します。

    rtrim(str)
    概要 : 文字列の最後の空白を削除します。
    str : 対象文字列
    戻り値 : 空白を削除した文字列

    指定した文字列の最後から0文字以上の連続する空白を削除した文字列を返します。

    toCashString(num)
    概要 : 3桁ごとにカンマを付加した文字列を作成します。
    num : 数値
    戻り値 : カンマ付き数値文字列

    指定した数値に3桁ごとにカンマを付加した文字列を作成します。

    numberValue(cashStr, zeroToBlank)
    概要 : 数値を表現するカンマ付き文字列の数値を取得します。
    cashStr : カンマ付き数値文字列
    zeroToBlank : trueにセットすると値がゼロの場合は空白を返す
    戻り値 : 数値

    数値を表現するカンマ付き文字列の数値を取得します。

    setupFilteredField(field, regex, keyupFunc)
    概要 : 指定した正規表現パターンを強制するようにフィールドを設定します。
    field : 設定するフィールド
    regex : 強制する正規表現パターン
    keyupFunc : 入力があった場合に呼び出す関数

    指定したテキストフィールドを正規表現パターンのみを許容するように設定します。
    例:2文字以内の数値のみを許容するフィールド
    <input id="filteredField" type="text"/>
    
    <script type="text/javascript">
        <!--
        setupFilteredField($("filteredField"), /^[0-9]{0,2}$/, null);
        //-->
    </script>
    keyupFuncにはこのフィールドが引数として渡されます。

    setupCashField(field, keyUpFunc, zeroToBlank)
    概要 : フィールドを金額入力用に設定します。
    field : 設定するフィールド
    keyupFunc : 入力があった場合に呼び出す関数
    zeroToBlank : trueをセットすると値がゼロの場合はフィールドを空にする

    指定したフィールドを金額入力用に設定します。
    金額入力用に設定されたフィールドは フォーカスを取得するとカンマなしの表示となり、 フォーカスが外れるとカンマ付き表示となります。
    金額入力 <input id="cashField" type="text"/>
    
    <script type="text/javascript">
        <!--
        setupCashField($("cashField"), null);
        //-->
    </script>
    
    金額入力
    keyupFuncにはこのフィールドが引数として渡されます。

    validateDate(yy, mm, dd)
    概要 : 日付の妥当性を検証します。
    yy : 年
    mm : 月
    dd : 日
    戻り値 : カレンダ上妥当な日付である場合はtrue

    yy年mm月dd日がカレンダ上で妥当な日付を表すかを検証します。