Webcoordinatorのクライアントスクリプト機能は、ブラウザ上で実行するJavaScriptを生成します。例を示します。この例は入力項目のinputがフォーカスを失ったときに最小・最大のチェックをして、誤りがあればステータスバーにエラーメッセージを表示します。
<uji:form method="post" name="someform"> 入力項目: <uji:input name="someinput"> <uji:validate event="blur" type="int" minInclusive="10" maxInclusive="20" > window.status="入力項目には10~20の整数を指定せよ"; target.focus(); </uji:validate> </uji:input> .... </uji:form>
ポイント
クライアントスクリプト機能では、JavaScriptを直接記述して任意の動作をさせることができます。簡単な入力チェックのみの場合はコンポーネントタグを利用すると簡単に記述することができます。
クライアントスクリプト、およびJavaScriptの使用にあたっては、以下の注意事項があります。
ブラウザの種別によって動作しない場合がある
JavaScriptは言語仕様が制式化されておらず、ブラウザごとに機能が異なったり、バージョンアップでの非互換が発生する場合があります。また、ブラウザの設定でJavaScriptを禁止にする場合もあり、アプリケーション作成においては、JavaScriptが動作しなくても構わないように設計する必要があります。
繰り返し項目では書かない
JavaScriptを記述するとサーバーからクライアントへのデータ送信量が多くなります。特に繰り返し項目中で使用すると、繰り返し回数分だけのJavaScriptが送信されるため負荷がかかり、また場合によってはJSPのサイズ制約のために動作できなくなります。
ポイント
JSPのサイズ制約
JSPの画面はサーブレット化されて_jspServiceメソッドに展開されますが、Javaのメソッドサイズはコンパイル後で64kバイトが上限と設定されており、これを超えると実行不可能となります。
ビジネスロジックレベルの判断を含んではならない
JavaScriptによってチェック処理をしたとしても、JavaScriptが動作しない環境を考慮してサーバー側のロジックで再度のチェックが必要です。JavaScriptでビジネスロジックレベルの判断をすると、ビジネスロジックをサーバーとJavaScriptの双方で持つことになって、保守性が損なわれます。また、JavaScriptは画面ごとに記述するため、さらにビジネスロジックの所在が分散することになります。
UJIタグが生成するHTMLに依存した処理を作成しない
Apcoordinatorのバージョンアップに伴う機能追加や最適化のために、“UJIタグリファレンス”に記載の仕様の範囲内で、UJIタグが生成するHTMLパターンが変更される場合があります。このため、UJIタグが生成するHTMLに依存した処理をJavaScriptで作成すると、Apcoordinatorをバージョンアップした際に動作しなくなる可能性があります。
例えば、JavaScriptの「elements[通し番号]」形式の記述で入力項目を参照すると、将来のバージョンでUJIタグが生成するHTMLでINPUTタグが追加された場合に、通し番号が変わるため動作しなくなります。
ポイント
コンポーネントタグが出力した入力項目の参照方法
コンポーネントタグが生成した入力項目をJavaScriptで参照する方法については、「Tips」の「コンポーネントタグが作成した入力項目をJavaScriptで参照したい」を参照してください。
以上のことを考慮して、クライアントスクリプト、JavaScriptは以下の条件で使用するようにします。
単純な未入力チェックや文字種チェック等に限定する
必要以上のロジックを持たないチェックに限定します。
クライアントでのチェックが効果的な場合に限定する
誤りの起きやすい項目など、クライアントでのチェックによる効果が出る場合に限定します。
Webcoordinatorのクライアントスクリプトを使用する
クライアントスクリプトを使用することによって、JavaScript記述を最低限にすることができます。