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

46
私私私私私私私私私 私私 XPages 私私私私私私私私私私私私私 私私私私私私私私私私 私私私私私私私私私私私私私私私 私 私 。・・・ 私私 私 ( 私私私私私私私私私 )

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

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

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

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

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

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

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

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

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

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

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

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

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

自己紹介

谷口 望Nozomi   Taniguchi

活動拠点:広島

開発者 & 妻 & ママ & 妊婦 

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

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

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

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

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

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

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

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

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

わる!?

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

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

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

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

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

やりたかったこと

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

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

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

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

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

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

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

解決策(?)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

つまり

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

私が作ったコード

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

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

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

問題報告

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

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

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

!?

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

検証

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

!?

書き出された HTML

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

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

解決策

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

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

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

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

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

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

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

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

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

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

やりたかったこと

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

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

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

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

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

問題発覚

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

!?

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

解決策(?)

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

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

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

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

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

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

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

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

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

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

やりたかったこと

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

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

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

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

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

問題発覚

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

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

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

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

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

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

検証

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

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

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

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

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

検証

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

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

検証

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

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

検証

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

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

検証

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

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

検証

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

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

検証

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

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

検証

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

!?

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

検証

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

!?

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

解決策

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

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

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

解決策

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

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

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

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

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

Printでメッセージ表示

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

解決策

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

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

解決策

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

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

解決策

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

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

解決策

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

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

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

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

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

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

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

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

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

やりたかったこと

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

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

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

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

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

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

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

!?

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

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

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

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

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

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

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

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

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

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

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

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

やりたかったこと

XPages で多言語対応

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

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

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

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

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

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

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

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

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

ら保存をする

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

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

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

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

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

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

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

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

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

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

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

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