vistasみなさん!XPages開発していますか!?さて今回は、JavaScriptの型変換について記載してみたいと思います。SSJSについてもやるので、JavaScriptが続いてなんだかXPagesから離れてるな~なんて思っている方、ぜひ見てくださいね。相互変換について書いていきます。Number型にtoString()メソッドが存在するので、これを使うことで良いでしょう。String関数や自動型変換を利用することもできます。自動型変換を利用した記述の少ない方法もよく取られます。同じ結果だが、//num2を数値から文字列に型変換することを名確認するため、(num2+&#39;&#39;)とする。書式を指定した変換の仕組みは、ビルドイン関数にありませんが、XPagesでは書式変換用の関数を利用できます。CSJSではDojoの関数"dojo.number.format"を利用します。dojo.numberオブジェクトを使用するためには、XPagesのリソース→追加→Dojoモジュール→Dojoモジュール名"dojo.number"を指定します。書式については、こちらにを参照してください。SSJSについては、I18n.toString()を使用することで、任意のフォーマットに安全に変換出来ます。&quot;num0-2:123,456.00&quot;日付→文字列JavaScriptのDateオブジェクトには、toString()メソッドが存在しますが、これはローケーションによって書式が異なり、戻り値の予測が困難なため、使用してはいけません。XPagesでは数値型と同じようにCSJS、SSJSに関数が用意されていますので、それを利用しましょう。dojo.date.localeオブジェクトを使用するので、XPagesのリソース→追加→Dojoモジュール→Dojoモジュール名"dojo.date.locale"を指定してください。17:25:31&quot;日付から文字列への変換で、注意しなければならないのは日付、時刻をユーザーのタイムゾーンに合わせる必要がある、ということです。日本国内のみのアクセスに限定されるのであれば意識することはないですが、複数のタイムゾーンからのアクセスが考えられる場合は必ず配慮してください。サーバーとクライアントとのタイムゾーンが違う場合、サーバーでDateオブジェクトから文字列に変換すると、通常はサーバーのタイムゾーンで変換され、レンダリングされるので、ユーザーには間違った日時が出力されてしまいます。XPagesでは、SSJSでの日付の処理をクライアントのタイムゾーンに合わせることができます。DBのプロパティで設定出来ます。この設定を行うとXPagesは、初回アクセス時にブラウザのタイムゾーンを取得するためのレスポンスを出力し、クライアント側でJavaScriptによって自動的にタイムゾーンの取得と、サーバーへの送信が行われ、サーバーがセッション情報として保持する、という動作をするようです。XPagesをJSONを使用したWebサービスとして使うような場合では、この支援が受けられない場合があります。使用することで、数値を介して変換します。タイムゾーンに関係なく、UTCの1970/1/1からその日付までのミリ秒値(Tick値)を出力/入力できますので、タイムゾーンを意識することなく安全で確実に日時情報のデータの送受信ができます。}});まだまだ続くよ今日はこのへんで。次回は数値型、日付型への変換について書く予定です。受賞者としてブログを連載することとなりました。サマリーなどをご紹介させていただきます。システムエンジニア歴は11年ですが、Lotus製品にかかわるようになったのは約3年前で、それまでは他プラットフォームで比較的初期の段階からWebアプリケーションを中心に開発業務を行ってきました。XPagesの「拡張HTMLエディタパーツ」「ファイルアップロード・コントロール」の開発にいおて表彰いただき、本当にうれしく思います。WebアプリケーションのプアなUIに対する1つの解答として発案しましたが、開発に当たっては多くの苦労を伴いました。その時のチームメンバーには感謝の念が堪えません。技術はDominoをWebアプリケーションとして展開するのに、標準的なものであればごく簡単にできてしまう非常に優れた仕組みと思います。今回のように複雑な仕組みを構築しようとした場合、技術文書が少なく試行錯誤の連続でした。カスタムコントロールをDBにかかわらず汎用的に設計したときの親ページとの情報の受け渡しや、Notes文書のリッチテキスト形式の解析に多くの時間を割きました。Javaサーブレット、Javascript(サーバー・クライアント)、ActiveX等いくつも技術的要素を組み合わせた仕組みとなっているため、その連携など苦労する個所が随所にあり、開発は非常に困難でした。ファイルアップロード・コントロールにおいては、XPagesのマルチリンガル機能を利用した英語との2ヶ国語対応、IE8対応を行うなど、進化をつづけています。2011に参加することになりました。ここで期待していることは、やはり、XPages関連の最新情報に興味があります。XPagesは、まだまだ進化の過程にあると思いますので、スマートフォンやクラウドサービスといった新しいプラットフォームに対してどのようなアプローチを行っていくのかを中心に見てきたいと思っております。開発者の立場として、Designerももっと進化してもらいたい・・・とも願っているので、それに関する情報も期待しています。2011のレポートをお伝えする予定です。vistasみなさん!XPages開発していますか!?本題に入る前にXPageの画面を編集する際、WYSIWYGの画面で実装しています?もし、ちょっとディープな世界に足を踏み入れたければ(沼に足をつっこみたければ!?)ソースの画面を開きましょう!↑恐れずに[ソース]を押しましょう!この連載では、タグをガシガシ書いていくことが多いので、是非ソース表示に慣れてくださいね。HTMLタグを書こう今回のテーマは、「HTMLタグを自由にコントロールしよう」ということですが、これはHTMLを書こうぜ!ということです。サーバーコントロールがあるのに、なぜわざわざHTMLを書かなくてはならないのか、もちろんそれにはメリットがあるからです。簡単に比較してみました。記述したHTMLがそのまま描画される△コントロール名から想像するか、実際に出力されたものを確認するしかない。プロパティ等によって出力されるHTMLが異なる。〇HTMLが意図したものなので、操作しやすい。△プロパティや状態によりHTMLが異なったり、クライアントIDが動的に変わるため、操作しづらい。〇サーバーコントロールに比べて少ない△HTMLタグに比べて多いテキストボックスなどのフォームへのデータバインドXできない。サーバー側で入力値を受け取ることはできる。△WYSIWYG画面で編集できない。プロパティウィンドウ等の支援もない。HTMLタグやIDが書いたままがレンダリングされるため、クライアントJavaScriptを多用する場合は有利な場合もある。〇WYSIWYG画面で編集でき、プロパティウィンドウ等の支援もある。レンダリングされるHTMLが動的であったりIDが動的なため、クライアントJavaScriptを多用する場合は不利な場合もある。〇タグのレンダリングを含め、様々なコントロールができるこのように一長一短で、すべてにおいてHTMLを使用するのが望ましいわけではありませんので、適所に使用することを心がけましょう。HTMLの記述と属性値の動的割り当てどうやってHTMLを書くのかは、まあ簡単だと思います。コード画面を開いておもむろにタグを記述します。id属性も記述した通りのHTMLが出力されるので、Javascriptでの操作やCSSの適用などにid名がそのまま使えて便利です。属性の内容をサーバーサイドで動的に書き換えたい場合はどうでしょう?XPagesでは記述したタグの属性値を動的にレンダリングする方法がありますので、ご紹介します。属性値のところで、動的に値を変えたい場所に、#{}や${}式を書くことができます。例1)データソースのNotesXspDocumentが編集モードの場合に表示する。&#39;none&#39;}&quot;&gt;・・・&lt;/div&gt;例2)クラス名にviewScopeの"class"の値を入れる。#{viewScope.class}&quot;&gt;送信&lt;/button&gt;例3)ビュー"view01"がデータソースのリピートコントロール内の繰り返し要素で、ビュー列"title"の値をテキストボックスに表示する。上の比較表で、HTMLの方がサーバーサイドのメモリの消費量が少ない、と書きました。実際に計測したので、その方法と結果をご紹介します。type="text")が100個あるページ(2)を用意。Httpサービスを起動直後に(1)のページを表示し、メモリ消費量を記録。Httpサービスを停止→起動し(2)を表示しメモリ消費量を記録。=結果=メモリ消費量サーバーコントロール(1)ページ19.2MBHTML(2)ページ16.8MBこのように、同じテキストボックスでもHTMLタグで書いたほうがメモリ消費量が少ないことがわかります。同時接続の数や頻度が多くなると、その差も開いてくることが考えられますので、特に多セッションが考えられる場合、厳しいレスポンス要件が期待される場合は、HTMLタグ記述が有効です。type="text"など)の入力値をサーバーで受け取るには、paramグローバルオブジェクトを利用します。ともに自動的に送信されるので、HTMLタグで書いたとしても、特に意識する必要はありません。vistas九州のパートナー会で作成しているQAアプリで必要になったので調査しました。要件としては「入力された半角・全角をどちらかに統一したい」ということ。英数は半角で、カナは全角で統一するのがすっきしますよね。いうことで調べてみました。ICU4JというJavaライブラリがあるんですね。これを使えば簡単そうです。この例の他にも、変換の方法が色いろあるようです。準備ICUのサイトからICU4Jをダウンロードする。lib」に「icu4j-52_1.jar」をコピーする。XPagesを作って下記をコピペしたら動きます。vistasみなさん!XPages開発してますか?!XPages、便利ですよねぇ。Notesの資産を手軽に且つ見栄え良のいいWebを手軽に作成出来ますよね。Libraryを組み合わせればさらに強力なユーザー・エクスペリエンスを提供できますし、ますます便利に。XPagesを知ると、いままでのFormWebには戻りたくないですよね。それも、XPagesのフレームワークが非常に強力であるおかげなのですが、裏を返せば自由度が少ないとも言えます。フレームワークの枠を外れた複雑なことをしようとすると、フレームワークが何をしているかというのを解析して把握する必要あるんですよね。いうことでこのブログでは、XPagesをより深く掘り下げてみてわかったことを連載でお伝えしたいと思います。お分かりかと思いますが、初心者向けの内容ではないので、あしからず。連載の項目は大雑排にしか決まっていないのですが、こんな感じです。サーバーコントロールに頼らない!HTMLタグを自由にコントロールしよう!JavaScriptをもっと知ろう!jQueryを使おう!独自でAjaxしてみよう!Javaのライブラリを使ってみよう!今回は、プロローグということで、具体的な記事は次回からです。vistasみなさん!XPages開発していますか!?さて今回は型変換の続きで、文字や日付型から数値への型変換を書いていきます。(+"08")ということでした。理由については、前々回の記事を参照してください。