XPagesDay 2016 「私がハマった失敗例」

Post on 26-Jan-2017

560 views 2 download

Transcript of XPagesDay 2016 「私がハマった失敗例」

私がハマった失敗例私が XPages の開発でつまづいたケースをいくつかご紹介します。皆様は大けがされませんように・・・

谷口 望 ( 株式会社ライブネス )

アジェンダ• 自己紹介 ご挨拶 注意点

• つまづきポイント その1:リッチテキストにおまけ!?

• つまづきポイント その2:リンクコントロールのリンク先が勝手に変わる!?

• つまづきポイント その3:共通のページタイトルは難しい!?

• つまづきポイント その4:サーバーサイド処理に無視される!?

• つまづきポイント その5:ビューの部分更新は親切!?

• つまづきポイント その6:多言語対応には要注意!?

自己紹介

谷口 望Nozomi   Taniguchi

活動拠点:広島

開発者 & 妻 & ママ & 妊婦 

ご挨拶と注意点• XPages を使った開発で困ったことをご紹介します。

• 私が実際に困った事例なので、すべての方の参考になるかはわかりません。

• 開発環境がDomino8.5.3 なので、新しい環境では解消されているかもしれません。

• クライアントは、Web ブラウザを使うことを前提としています。

• 「もっと良い解決策があるよ!」という方は是非未熟な私にご教授ください。

次にご紹介するのは・・・• つまづきポイント その1:リッチテキストに

おまけ!?• つまづきポイント その2:リンクコントロールのリンク先が勝手に変

わる!?

• つまづきポイント その3:共通のページタイトルは難しい!?

• つまづきポイント その4:サーバーサイド処理に無視される!?

• つまづきポイント その5:ビューの部分更新は親切!?

• つまづきポイント その6:多言語対応には要注意!?

やりたかったこと

リッチテキストの箇所を部分更新したい

リッチテキストにおまけ!?

問題発覚部分更新後に CK エディター内に入力した覚えのない「 , 」が付いてくる!?

リッチテキストにおまけ!?

!?部分更新を5回実行しました

解決策(?)

その時は、必ず部分更新でなければならない状態ではなかったので、全更新で対応しました。

リッチテキストにおまけ!?

次にご紹介するのは・・・• つまづきポイント その1:リッチテキストにおまけ!?

• つまづきポイント その2:リンクコントロールのリンク先が勝手に変わ

る!?• つまづきポイント その3:共通のページタイトルは難しい!?

• つまづきポイント その4:サーバーサイド処理に無視される!?

• つまづきポイント その5:ビューの部分更新は親切!?

• つまづきポイント その6:多言語対応には要注意!?

やりたかったこと• 弊社製品のポータル画面に配置する、アプリケーションの入り

口から、別画面でアプリケーションを全画面起動させたい

• <a href=“/**/**.nsf” target=“_blank”>アプリケーションを開く </a>を配置したい

リンクコントロールのリンク先が勝手に変わる!?

つまり

私が作ったコード

リンクコントロールのリンク先が勝手に変わる!?

database.getFilePath() は、アプリケーションのファイルパスが「 \」区切りで返ってくるので、「 /」に置き換える

問題報告

• 開く URL がおかしい時がある

• URL の DB パスの小文字と大文字を変えると現象が起こっているかも?

リンクコントロールのリンク先が勝手に変わる!?

!?

検証

リンクコントロールのリンク先が勝手に変わる!?

!?

書き出された HTML

ファイルパスを一部大文字に変えてみる

解決策

リンクコントロールのリンク先が勝手に変わる!?

Valueに「 /」だけを指定するURLのファイルパスを一部大文字に変えてみた時の書き出された HTML

次にご紹介するのは・・・• つまづきポイント その1:リッチテキストにおまけ!?

• つまづきポイント その2:リンクコントロールのリンク先が勝手に変わる!?

• つまづきポイント その3:共通のページタイトルは難しい!?

• つまづきポイント その4:サーバーサイド処理に無視される!?

• つまづきポイント その5:ビューの部分更新は親切!?

• つまづきポイント その6:多言語対応には要注意!?

やりたかったこと

複数の XPage に共通のページタイトルをつけたい

共通のカスタムコントロールの pageTitle プロパティに指定をしたら、

各ページ共通のページタイトルがいっぺんにつけれると思った

共通のページタイトルは難しい!?

問題発覚

共通のページタイトルは難しい!?

!?

解決策(?)

XPage の各 pageTitle プロパティに直接指定をしました・・・

共通のページタイトルは難しい!?

次にご紹介するのは・・・• つまづきポイント その1:リッチテキストにおまけ!?

• つまづきポイント その2:リンクコントロールのリンク先が勝手に変わる!?

• つまづきポイント その3:共通のページタイトルは難しい!?

• つまづきポイント その4:サーバーサイド処理に無視される!?

• つまづきポイント その5:ビューの部分更新は親切!?

• つまづきポイント その6:多言語対応には要注意!?

やりたかったこと

• ほとんどの処理はクライアントサイド Javascript で処理

• 非同期通信で定期的にデータを取得(クライアント処理)

• 何かアクションを起こすときのみサーバーサイド処理が走る

サーバーサイド処理に無視される!?

問題発覚

• サーバーサイド処理のアクションが動かない

• クライアントサイド処理は問題なく動いている

• 定期通信のおかげで、ログインセッションは切れていない

• エラーを出すわけでもなく、うんともすんとも言わない

サーバーサイド処理に無視される!?

検証

サーバーサイド処理に無視される!?

ロード時間をセットログインチェック時間をセット

アクションの実行時間をセット ログ文書を保存

クライアントサイド サーバーサイド約1分間隔

検証

サーバーサイド処理に無視される!?

検証

サーバーサイド処理に無視される!?

検証

サーバーサイド処理に無視される!?

検証

サーバーサイド処理に無視される!?

検証

サーバーサイド処理に無視される!?

検証

サーバーサイド処理に無視される!?

検証

サーバーサイド処理に無視される!?

!?

検証

サーバーサイド処理に無視される!?

!?

解決策

サーバーサイド処理を実装したボタンを用意し、定期的にクライアント Javascript でクリックアクションを実行するようにしました。

サーバーサイド処理に無視される!?

解決策

サーバーサイド処理に無視される!?

ロード時間をセットログインチェック時間をセット

アクションのキック時間をセット ログ文書を保存

クライアントサイド サーバーサイド約1分間隔

アクションのキック時間をセット約15分間隔

Printでメッセージ表示

解決策

サーバーサイド処理に無視される!?

解決策

サーバーサイド処理に無視される!?

解決策

サーバーサイド処理に無視される!?

解決策

サーバーサイド処理に無視される!?

次にご紹介するのは・・・• つまづきポイント その1:リッチテキストにおまけ!?

• つまづきポイント その2:リンクコントロールのリンク先が勝手に変わる!?

• つまづきポイント その3:共通のページタイトルは難しい!?

• つまづきポイント その4:サーバーサイド処理に無視される!?

• つまづきポイント その5:ビューの部分更新は親切!?

• つまづきポイント その6:多言語対応には要注意!?

やりたかったこと

サーバー / アプリケーション / ビュー を指定して、

ビューコントロールに表示したい

ビューの部分更新は親切!?

問題発覚ビューのページャを移動後に、指定ビューを変更して、更新すると、

ページ番号を保持している!!

ビューの部分更新は親切!?

!?

解決策ページを移動するコードを発見!!

ビューの部分更新は親切!?

ページャを移動後にビューを更新

次にご紹介するのは・・・• つまづきポイント その1:リッチテキストにおまけ!?

• つまづきポイント その2:リンクコントロールのリンク先が勝手に変わる!?

• つまづきポイント その3:共通のページタイトルは難しい!?

• つまづきポイント その4:サーバーサイド処理に無視される!?

• つまづきポイント その5:ビューの部分更新は親切!?

• つまづきポイント その6:多言語対応には要注意!?

やりたかったこと

XPages で多言語対応

多言語対応には要注意!?

問題発覚• 不定期で言語のプロパティファイルがリセットされる

(「 en|**** 」のように、    変更したはずのプロパティが勝手に書き換わる)

• コードの更新のたびにリセットされるようになる

• 何もせずに「 Ctrl+S 」(保存)だけでもリセットされるようになる

多言語対応には要注意!?

解決策(?)• 言語のプロパティファイルのバックアップをとってか

ら保存をする

• すべての開発を完璧に完了させてから多言語対応する

•開発中 DB からテンプレートを作成後、

新規アプリケーションを作成し、作成していた開発中のテンプレートをあてる

多言語対応には要注意!?

まとめ•おかしいと思ったら、クリーン&再起動&作り直

•やっぱり英語はできたほうがいいかも・・・

•柔軟な発想&発想の転換も必要

•困ったら、きっと誰かが助けてくれます 

QA サイトのご紹介「 http://qa.xpages.jp/QA/qa.nsf/top.xsp」

ご清聴ありがとうございました。