/
4.5.22 (Dec 2008)

4.5.22 (Dec 2008)

新しい機能 (Java)

cell に autoWrap 属性と autoWrapType 属性を追加

これらの属性を設定することで、cell のテキストの複数行表示が可能となります。

機能改善 (Java)

richText属性が true に設定された UI コンポーネントで全角スペースを利用することができる

過去のバージョンでは、 richText 属性が true に設定された UI コンポーネント上で全角スペースを表現するための手段はありませんでした。
本バージョンより、リッチテキストの中で全角スペースを表現するために文字参照として「 」を利用することができるようになりました。
ただし、「 」は通常入力される全角スペースとは文字コードが異なります。
また、使用するフォントによっては、「 」による全角スペースの表示がサポートされていない場合があることに注意してください。

メモリとCPUについてパフォーマンスを向上

振る舞いの変更 (Java)

ClientEvent オブジェクトが null クリアされるようになります。

本バージョンより、 ClientEvent オブジェクトの振る舞いが変更されました。
従来は EventHandler#getClientEvent() にて取得可能な ClientEvent オブジェクト は次のイベントが発生するまでクリアされませんでした。
しかしながら、メモリ使用効率を向上するために本バージョンより ClientEvent オブジェクトはイベント呼び出しの後にクリアされるようになりました。
※修正の詳細は 10247 を参照ください。
このため、本バージョンより以下の場合に EventHandler#getClientEvent() で取得可能な ClientEvent が null になるケースがあります。

  • イベント呼び出しスレッド以外で EventHandler#getClientEvent() を使用した場合。
  • イベント呼び出しスレッドから、 EventHandler#fireEvent() を呼び出した後にEventHandler#getClientEvent() を使用した場合。
  • 有効な ClientEvent オブジェクトへの参照をイベント呼び出しスレッド以外の処理で使用した場合。

EventHandler#getClientEvent() にて取得可能な ClientEvent オブジェクトの値はイベント呼び出しの処理が終了した後では取得される値について保証されません。
このため、イベント処理スレッド以外で ClientEvent を使用している場合、従来のバージョンから ClientEvent の内容については保証されていません。
ただし、従来のバージョンでは、 EventHandler#getClientEvent() を使用して取得可能な ClientEvent は前回のイベントの内容が保持されていたため、基本的には null になることはありませんでした。

この振る舞いの変更で問題が生じる可能性がある場合、Nexaweb Platform 4.5.24 の 10351 により導入された互換性のオプションを使用してください。

修正項目 (Java)
10231機能追加 : cell のオートラップ機能の追加
10232gridTable: gridTable で row を削除したとき ClassCastException が発生する
10240gridTable: gridTable で MCO によって row を削除したとき ClassCastException が発生する
10245gridTable: gridTable で row を削除したときモメリリークが起きる
10247レイアウトペインでウィジェットを削除したときモメリリークが起きる
10248gridTable: footerRow で cell 以外のウィジェットを使うと CPU の負荷が高まる
10249tree の要素に対し replace-children を行うと ArrayIndexOutOfBoundsException が発生する
10250richText で全角スペースが使えない
10272cell の selected 属性を true に設定ても表示が selected の状態にならない
10278gridTable: gridTable が lockedColumn を持つとき水平方向にスクロールすると CPU の負荷が100%となる
10284ウィンドウをリサイズしたときに popupMenu がその親メニューから離れて表示される
10286互換性 : comboBoxo が持つ listBox で ActiveLost イベントが発生しない
10287互換性 : menuItem のショートカットが動作しない

修正の詳細 (Java)
10231
cell のオートラップ機能の追加
対象<cell/>
機能
追加
内容
<cell/> 上で autoWrap 属性と autoWrapType 属性を正式サポート。
この機能追加のためのコード修正はありません。
従来のバージョンから非公式に autoWrap 属性と autoWrapType 属性を <cell/> の中で指定する事ができましたが、本バージョンから、 正式にサポート対象になりました。
10232
gridTable: gridTable で row を削除したとき ClassCastException が発生する
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:全て
対象<gridTable/>
事象
内容
<gridTable/> から XModify を使用して <row/> データを削除した場合に ClassCastException 例外が発生してしまう。
修正
内容
<gridTable/> から XModify を使用して <row/> データを削除しても ClassCastException 例外が発生しないように修正。
この問題は 10240 と共に修正されました。
10240
gridTable: gridTable で MCO によって row を削除したとき ClassCastException が発生する
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:全て
対象<gridTable/>
事象
内容
<gridTable/> から MCO を使用して <row/> データを削除した場合に ClassCastException 例外が発生してしまう。
修正
内容
<gridTable/> から MCO を使用して <row/> データを削除しても ClassCastException 例外が発生しないように修正。
この問題は 10232 と共に修正されました。
10245
gridTable: gridTable で row を削除したときモメリリークが起きる
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:全て
対象<gridTable/>
事象
内容
<gridTable/> から <row/> データを削除するとメモリリークが発生してしまう。
修正
内容
<gridTable/> から <row/> データを削除してもメモリリークが発生しない要に修正。
10247
レイアウトペインでウィジェットを削除したときモメリリークが起きる
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:全て
対象ClientEvent オブジェクトのスコープ
事象
内容
この問題は厳密にはメモリリークではありません。
この問題は ClientEvent オブジェクトが次のイベント発生まで残り続けることが原因で起こるメモリ使用効率に関する問題です。

ClientEvent オブジェクトはイベント発生元の情報を保持しているため、イベント処理によってイベント発生元を含む XML Element データを削除した場合に、 ClientEvent オブジェクト内に削除された Element への参照が残ります。
このため、削除済みの XML Element の情報が ClientEvent からの参照が残っているため、次のイベントが発生し、 ClientEvent オブジェクトの内容が クリアされるまで削除済みの XML Element 情報をメモリ上から削除することができません。
このため、大量のデータを削除する処理によってこの問題が起こった場合、画面上・XML上はデータが削除されていてもメモリを解放することができずに、 この問題が起こるケースで大量のデータを繰り返し扱う場合などで OutOfMemory が発生する原因になりうる可能性があります。

修正
内容
この問題を解決するために、 ClientEvent オブジェクトをイベント呼び出し処理が終了した後にクリアするように修正しました。
その結果、以下の場合に ClientEvent オブジェクトが null になる可能性があります。
  • イベント呼び出しスレッド以外で EventHandler#getClientEvent() を使用した場合。
  • イベント呼び出しスレッドから、 EventHandler#fireEvent() を呼び出した後にEventHandler#getClientEvent() を使用した場合。
  • 有効な ClientEvent オブジェクトへの参照をイベント呼び出しスレッド以外の処理で使用した場合。
10248
gridTable: footerRow で cell 以外のウィジェットを使うと CPU の負荷が高まる
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:全て
対象<gridTable/>
事象
内容
<gridTable/> の中で <footerRow/> を使用し、 <footerRow/> の中で <cell/> 以外の UI コンポーネントを使用した場合に CPU 負荷が高くなり、メモリ使用量が増加し続ける。
修正
内容
<gridTable/> の中で <footerRow/> を使用し、 <footerRow/> の中で <cell/> 以外の UI コンポーネントを使用しても CPU 負荷の不要な増加、 およびメモリ使用量の増加が起こらないように修正。
10249
tree の要素に対し replace-children を行うと ArrayIndexOutOfBoundsException が発生する
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:全て
対象<tree/>
事象
内容
フォーカスを持っており、ノードが選択されている <tree/> に対して <tree/> 自身の onSelect もしくは onStateChange イベント呼び出しによって <tree/> の子エレメントを <replace-children/> コマンドで置換しようとした場合に ArrayIndexOutOfBoundsException 例外が発生する場合がある。
修正
内容
ArrayIndexOutOfBoundsException 例外が発生しないように修正。
10250
richText で全角スペースが使えない
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:全て
対象richText 属性を指定可能な UI コンポーネントの全て
事象
内容
richText 属性が true の場合にテキスト値として全角スペースを表示することができなかった。
richText 属性が true の場合はテキスト値をパースする処理が実行され、パース処理によって全角スペースおよび連続するスペースが単一のスペースに置き換えられるためにこの事象が発生していました。
修正
内容
表示上の全角スペースを実現するための文字参照として「&emsp;」を使用できるように修正しました。
この修正によってテキスト値の全角スペースを表示したい位置で「&emsp;」を使用する事で、全角スペースを表示することができるようになりました。
ただし、「&emsp;」によって表現される全角スペースは通常入力される全角スペースとは文字コードが異なります。
このため、表示上は全角スペースに見えても文字コードが異なるため、プログラム等から「&emsp;」によって表現される全角スペースは入力等による全角スペースと同等に扱うことはできません。
また、使用するフォントによっては、「&emsp;」による全角スペースの表示がサポートされていない場合があることに注意してください。
10272
cell の selected 属性を true に設定しても表示が selected の状態にならない
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:全て
対象<cell/> 以外の UI コンポーネントが <cell/> の変わりに使用されており、 selectionMode 属性が "multiCell" もしくは "singleCell" に設定されており、 初期表示時にいずれかの <cell/> が selected 属性値として "true" を持っている <table/>, <treeTable/>, <gridTable/>
事象
内容
初期表示時に selected 属性値が "true" に設定されている <cell/> が選択状態として表示されなければならないが、 <cell/> が選択状態にならない。
修正
内容
selected 属性値が "true" に設定されている <cell/> が存在している場合、必ず選択状態として表示されるように修正。
10278
gridTable: gridTable が lockedColumn を持つとき水平方向にスクロールすると CPU の負荷が100%となる
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:全て
対象<lockedColumn&/gt; をカラムデータとして持っており、横スクロールバーが表示されている <gridTable/>
事象
内容
<lockedColumn&/gt; をカラムデータとして持っている <gridTable/> を横スクロールバーにて横スクロールした場合に CPU 負荷が 100% になってしまう。
修正
内容
CPU 負荷が不要に上がらないように修正。
10284
ウィンドウをリサイズしたときに popupMenu がその親メニューから離れて表示される
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:全て
対象<menu/> によって表示されるポップアップメニュー
事象
内容
<menu/> によって表示されるポップアップメニューが開いている状態で、ブラウザウインドウをリサイズするとポップアップメニューの表示位置が <menu/> の表示位置に伴って自動的に移動しない。
このため、 <menu/> の表示位置と、ポップアップメニューの表示位置が異なる位置で表示される状況をユーザーオペレーションによって作り出すことができてしまう。
修正
内容
<menu/> がブラウザウインドウのリサイズによって移動した場合、 <menu/> によって表示されているポップアップメニューも一緒に移動するように修正。
10286
互換性 : comboBox が持つ listBox で ActiveLost イベントが発生しない
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:4.5.20~
対象<comboBox/> の中の <listBox/> に onActiveLost イベントが設定されている場合。
事象
内容
<comboBox/> の中の <listBox/> の onActiveLost イベントが Nexaweb Platform 4.5.20 以上を使用した場合、発生しなくなりました。
Nexaweb Platform 4.5.19 以前を使用している場合、<comboBox/> の中の <listBox/> の onActiveLost イベントが発生していました。
修正
内容
<comboBox/> の中の <listBox/> の onActiveLost イベントが発生する用に修正。
この問題は Nexaweb Platform 4.5.20 の 10192 の修正によって生じるようになった互換性問題になります。
10192 の修正によって内部でポップアップメニューの表示をコントロールする処理に対して修正が行われており、ポップアップメニューを閉じる際にイベントがクリアされることが原因でこの問題が起こりました。
10287
互換性 : menuItem のショートカットが動作しない
環境
OS:全て
ブラウザ:全て
JVM:全て
Nexaweb Platform:4.5.20~
対象<menuItem/> のショートカットキー
事象
内容
<menuItem/> に shortcut 属性を使用してショートカットキーを設定している場合に、一度でもショートカットキーを設定している <menuItem/> を開いた場合、以後ショートカットキーが効かなくなってしまう。
修正
内容
<menuItem/> を開いた後でもショートカットキーが有効になるように修正。
この問題は、 Nexaweb Platform 4.5.20 の 10101 の修正によって生じるようになった互換性問題になります。
10101 の修正によって内部でショートカットキーをコントロールする処理に対して修正が行われており、 <menuItem/> を表示した場合にショートカットキーをコントロールする処理が呼び出されるようになりました。
10101 の修正のためにショートカットキーをコントロールする処理の呼び出しが必要になるのですが、この呼び出しの中で <menuItem/> に対するショートカットキーの追加と削除を行う処理が不要に呼び出されていた事が原因でこの問題が起こりました。