/
4.5.28 (May 2009)

4.5.28 (May 2009)

新しい機能 (Java)

window-deactivation-policy エレメントを nexaweb-client.xml に追加

このエレメントには、 Java アプレット自身がフォーカスコントロールと Nexaweb UI コンポーネントのフォーカスコントロールをどのようにして扱うかを指定します。
Nexaweb Platform 4.5.20 の 10102101041019210202 によってアプレット自身のフォーカスコントロールと Nexaweb UI コンポーネントのフォーカスコントロールが連動する修正が加えられており、 アプレット自身がフォーカスを失う/取得した場合に Nexaweb UI コンポーネントもフォーカスを失う/取得するようになりました。
この振る舞いは 4.5.19 以前とは異なる振る舞いになるため、互換性を確保するために 4.5.28 によってアプレット自身のフォーカスコントロールと Nexaweb UI コンポーネントのフォーカスコントロール を連動するためのオプションが追加されました。
また、フォーカスコントロールの連動を行わず Nexaweb Platform 4.5.20 の 10202の問題を解決するために、このエレメントにはテキストカーソルの点滅に関する振る舞いのオプションもあります。
window-deactivation-policy エレメントの設定値の詳細については 10526 の修正内容を参照ください。

機能改善 (Java)

テーブルのパフォーマンス改善

テーブル(<table/>, <treeTable/>, <tree/>, <gridTable/>)の中で <cell/> 以外の UI コンポーネントを使用している場合の 描画速度に関するパフォーマンスを改善しました。
これは、 Nexaweb Platform の 9901 の修正によってテーブルの中で <cell/> 以外の UI コンポーネントを使用している場合に コンポーネント幅を計算するためのロジックが実行されることが原因でテーブル描画パフォーマンスの劣化が起こった問題を解決しています。

振る舞いの変更 (Java)

フォーカス移動イベントの変更

Nexaweb Platform 4.5.20 の 10102101041019210202 の修正によってアプレット自身がフォーカスを失った場合に Nexaweb UI コンポーネントもフォーカスを失うようになりました。
この結果、アプレット以外の UI コンポーネント(ブラウザのメニューやアドレスバー、その他別ウインドウのアプリケーションなど)にフォーカスが移動すると、 Nexaweb UI コンポーネントもフォーカスを失い、フォーカスイベントが発生します。
また、アプレット自身にフォーカスが復帰した場合には Nexaweb UI コンポーネントもフォーカスを再度得る事になるため、フォーカス取得イベントが発生します。
この振る舞いは Nexaweb Platform 4.5.20 以上のバージョンでのデフォルトの振る舞いになりました。
4.5.19 以前と同様の振る舞いを希望する場合は nexaweb-client.xml の /client-app/window-deactivation-policy の設定を「none」に設定してください。
/client-app/window-deactivation-policy の設定値の詳細については 10526 の修正内容を参照ください。

修正項目 (Java)
10257コンボボックスのプルダウンボタンを押下すると、フォーカスがコンボボックスに移動しない。
10415互換性 : 未確定テキストがあるときに別のテキストフィールドにフォーカスを移動するとIMEが自動的にオフになってしまう。
10526互換性 : 非Nexawebコンポーネントにフォーカスが移動した場合にonActiveLostイベントが発生する
10538互換性 : Java Applet がフォーカスを持っている場合に Alt キーが有効になってしまう
10539互換性 : validatorをテーブルエディタのonActiveLostイベントで使用している場合、onActiveLostイベントが繰り返し発生する場合がある。
10567Nexaweb サーバー上でデッドロックが発生する場合がある。
10573互換性 : テーブルの中で textArea などの UI コンポーネントを使用している場合のパフォーマンス問題
10574互換性 : 非活性状態の UI コンポーネントに対してキーボードからのオペレーションが有効なる場合がある

修正の詳細 (Java)
10257
コンボボックスのプルダウンボタンを押下すると、フォーカスがコンボボックスに移動しない。
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:全て
対象onBeforeActiveLost イベントの処理によってサーバーへリクエストを行う処理を行っている UI コンポーネントの全て
事象
内容
onBeforeActiveLost イベントの処理の中でサーバーへリクエストを行う処理が含まれており、その処理を持っている UI コンポーネントがフォーカスを持っている状態から マウスクリックによってコンボボックスのプルダウンリストを表示するためのボタンを押した場合、あるいはメニューバーをドロップダウンリストを表示するた めにメニューを マウスクリックした場合に UI コンポーネントからコンボボックスにフォーカスが移動しない。
修正
内容
onBeforeActiveLost イベントの処理の中にサーバーへのリクエストを行う処理が含まれている場合に、コンボボックスのプルダウンリストを表示するためのボタンをマウスクリック した場合、メニューバーのメニューをマウスクリックした場合であってもフォーカスがコンボボックス、メニューバーに移動するように修正。
10415
互換性 : 未確定テキストがあるときに別のテキストフィールドにフォーカスを移動するとIMEが自動的にオフになってしまう。
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:4.5.20~
対象テキスト入力可能な全ての Nexaweb UI コンポーネント
事象
内容
IME による入力を Enter キーや ESC で確定/キャンセルせずに別の UI コンポーネントをマウスクリックした場合に IME の入力モードが自動的に OFF になってしまう。
IME の入力モードは 4.5.19 以前は自動的に OFF になることがありませんでした。
また、 inputCharsets 属性が指定されていた場合には、 IME の入力モードが自動的に inputCharsets の設定値に従ってコントロールされていましたが、この問題によって inputCharsets による入力モードの自動切り替えが無効になります。
修正
内容
IME の入力モードが自動的に OFF にならないように修正。
10526
互換性 : 非Nexawebコンポーネントにフォーカスが移動した場合にonActiveLostイベントが発生する
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:4.5.20~
対象全ての UI コンポーネント
事象
内容
Nexaweb UI コンポーネントがフォーカスを持っている状態から非 Nexaweb コンポーネント(OS のコンポーネント(ブラウザ以外のウインドウや、ブラウザのアドレスバーなど))にフォーカスを 移動した場合にフォーカスを持っている Nexaweb UI コンポーネントの onActiveLost イベントが発生してしまう。
修正
内容
この振る舞い自体は Nexaweb Platform 4.5.20 の 10102101041019210202 の修正によって発生するようになりました。
10102、 10104、 10192、 10202 の修正によってアプレット自身がフォーカスを持っていない場合に Nexaweb UI コンポーネントがフォーカスを失うように修正されているため、 この問題が生じるようになりました。
この問題を解決するために、過去の振る舞いとの互換性を確保するための以下のオプションが nexaweb-client.xml に追加されました。

/client-app/window-deactivation-policy
window-deactivation-policy は以下の 3 つの値を設定することができます。

  • release-focus : アプレット自身がフォーカスを失った場合に、 Nexaweb UI コンポーネントもフォーカスを失うようにする。
  • disable-cursor-blink : アプレット自身がフォーカスを失った場合に、 Nexaweb UI コンポーネントはフォーカスを失わないが、テキストカーソルの点滅を停止する。
  • none : アプレット自身がフォーカスを失った場合であっても、 Nexaweb UI コンポーネントはフォーカスも失わず、テキストカーソルの点滅も停止しない。

4.5.19 以前のバージョンと同様の振る舞いを期待する場合には「none」を指定してください。
4.5.20 以上のバージョンとテキストカーソルの点滅について同様の振る舞いを期待し、 onActiveLost イベントの発生を抑制したい場合は「disable-cursor-blink」を指定してください。
4.5.20 以上のバージョンと同様の振る舞いを期待する場合には「release-focus」を指定してください。

window-deactivation-policy が nexaweb-client.xml 内に存在しない、あるいは無効な設定値が設定されている場合のデフォルトの振る舞いは「release-focus」になります。

指定の詳細な内容については 4.5.28 に同梱される nexaweb-client.xml を参照ください。


nexaweb-client.xml の設定例(抜粋)
					<client-app>
        ...         <!-- =================================================================== -->
        <!-- Window deactivation policy                                          -->
        <!--                                                                     -->
        <!--    Indicates what action to take when the main client frame is      -->
        <!-- deactivated, for example by clicking away from the browser window   -->
        <!-- to use another application.                                         -->
        <!--                                                                     -->
        <!-- Possible settings:                                                  -->
        <!--    release-focus                                                    -->
        <!--       Unfocus the current focused component, and re-focus when the  -->
        <!--       window reactivates. This is the default behavior.             -->
        <!--    disable-cursor-blink                                             -->
        <!--       Stop the cursor from blinking, has no effect on the focus.    -->
        <!--    none                                                             -->
        <!--       Take no action.                                               -->
        <!-- =================================================================== -->
        <window-deactivation-policy>none</window-deactivation-policy>
        ... </client-app>
                
10538
互換性 : Java Applet がフォーカスを持っている場合に Alt キーが有効になってしまう
環境
OS:全て
ブラウザ:Internet Explorer
JVM:全て
Nexaweb Platform:4.5.26~
対象全ての Nexaweb アプリケーション
事象
内容
アプレット自身がフォーカスを持っている場合に Alt キーを単独で押すとブラウザのメニューバーにフォーカスが移動してしまう。
修正
内容
アプレット自身がフォーカスを持っている場合に Alt キーを単独で押した場合であってもブラウザにフォーカスが移動しないように修正。
10539
互換性 : validatorをテーブルエディタのonActiveLostイベントで使用している場合、onActiveLostイベントが繰り返し発生する場合がある。
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:4.5.26~
対象validator を UI コンポーネントの onActiveLost イベントで使用しており、validator の処理の中で DisplayService API からモーダルアラートを表示している場合。
事象
内容
マウスクリックやキーボードオペレーションの旅に UI コンポーネントの onActiveLost イベントが発生し、繰り返しモーダルアラートが表示されてしまう。
修正
内容
この問題を解決するために 4.5.28 で修正された 10526 のオプションを指定頂く必要があります。
この問題はアプレット自身がフォーカスを失う場合に発生しており、 DisplayService API を使用してモーダルアラートを表示した場合、いったんアプレット自身がフォーカスを 失った形になります。
このため、この問題を解決するためには 10526 にて導入された /client-app/window-deactivation-policy オプションに 「none」もしくは「disable-cursor-blink」を指定頂く必要があります。
このオプションを指定する事で、アプレット自身がフォーカスを失った場合であっても onActiveLost イベントが発生しなくなるため、この問題を解決することができます。
10567
Nexaweb サーバー上でデッドロックが発生する場合がある。
環境
OS:全て
JVM:全て
Nexaweb Platform:全て
対象Nexaweb Server
事象
内容
HTTP セッションのタイムアウト処理とメッセージキューでメッセージのドロップ処理が同じタイミングで行われた場合、 Nexaweb Server 上でデッドロックが発生する。
このデッドロックが発生した場合、サーバー上に不要な処理スレッド(HTTP セッションタイムアウトによる処理スレッドと、キューのドロップ処理スレッド)が残り続ける。
この問題はクライアント単位で発生し、この問題が発生した場合に Nexaweb Server の全てのクライアントに対する機能が停止することはありません。
修正
内容
デッドロックが発生しないように修正。
10573
互換性 : テーブルの中で textArea などの UI コンポーネントを使用している場合のパフォーマンス問題
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:4.5.20~
対象<table/>, <treeTable/>, <tree/>, <gridTable/>
事象
内容
テーブル(<table/>, <treeTable/>, <tree/>, <gridTable/>)の中で <cell/> の変わりに <cell/> 以外の Nexaweb UI コンポーネントを使用した場合に、テーブルの描画速度が Nexaweb Platform 4.5.19 と比較して遅い。
修正
内容
この問題は、 Nexaweb Platform の 9901 の修正によって生じるようになった互換性問題になります。
9901 の修正によってテーブル内の UI コンポーネントの幅を計算するためのロジックが実行されるように変更されており、この計算ロジックの実行が積み重なりパフォーマンス劣化が起こっていました。
10574
互換性 : 非活性状態の UI コンポーネントに対してキーボードからのオペレーションが有効なる場合がある
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:全て
対象onCommand イベントによって DisplayService API によってモーダルアラートを表示した後に、呼び出し元の UI コンポーネントを非活性状態(disabled="true")にした場合。
事象
内容
UI コンポーネントのイベントによって DisplayService API を使用しモーダルアラートが表示した後に、イベント発生元の UI コンポーネントを非活性状態にした場合、 モーダルアラートが閉じられた後に Enter キーを押すとイベント発生元 UI コンポーネントの onCommand イベントが発生してしまう。
イベント発生元 UI コンポーネントは非活性状態であるため、 Enter キーが押されても onCommand イベントを発生すべきではない。
修正
内容
非活性状態の UI コンポーネント上でイベントが発生しないように修正。
この問題は、モーダルアラートが閉じられた後に元の UI コンポーネントにフォーカスを戻す処理が原因で発生していました。
実際に画面上の UI コンポーネントは非活性状態であるため、 UI コンポーネントの外観は変更されず、マウスクリック等も無効ではあったのですが、 Enter キーによるオペレーションが有効になっていました。
元の UI コンポーネントが非活性状態になった場合、フォーカスを元の UI コンポーネントに戻さないように修正されました。
この問題は、 Nexaweb Platform の 10276 および 10290 の修正によって生じるようになった互換性問題になります。
4.5.24 のこれらの修正によって DisplayService API によってモーダルアラートが表示された場合の修正が行われています。