4.5.24 (Feb 2009)

4.5.24 (Feb 2009)

新しい機能 (Java)

tabPane の新しいスクロールボタン

Nexawebアプリケーションが起動しているブラウザのウィンドウをリサイズしたとき、tabPaneに含まれるタブの一部が隠れることがありま す。こ のとき、スクロールボタンが表示され、隠れた部分をスクロールして表示させることができます。このスクロールボタンは、大きく、見やすく、操作しやすく なっており、スタイル設定(stylable)の影響は受けなません。スクロールボタンは、 tabPane の内側に left/right で top/buttom に表示されます。

  • リサイズ時のふるまい:ウィンドウをリサイズしたとき、選択されている tab は常に表示される。これまでは、tabPane に最初の tab から順番に表示されていたため、リサイズの状態によっては、 tab が隠れることがあった。

  • スタイル:スクロールボタンの class 名は、tabButtonLeft、tabButtonRight、 tabButtonUp、tabButtonDown となります。

新しいジェネリックブリッジ

ジェネリックブリッジにより、オブジェクトとのブリッジとプロパティの設定を簡素化しました。

  • GenericContainerBridge クラスを拡張したカスタムブリッジについて、どのプロパティも設定することができます。OGNL形式をフルサポートしています

  • このブリッジを使うことで、 java.awt.Container を拡張した UIコンポーネントを xal の新しいエレメントとして、Javaのコードを記述することなく利用することができます

  • xal の新しいエレメントとして、component と property が追加されました。新しい package である com.nexaweb.client.bridges.xal.generic も追加されました。この package には、GenericComponentBridge と GenericContainerBridge が含まれます

機能改善 (Java)

次世代 Java プラグインに関連する改良

Java SE 6 の次世代プラグインが利用されているとき、モーダルダイアローグを追加すると複数回フラッシュします。また、キーボードの入力に反応しなくなります。この2つの問題に対応しています。

keep-last-client-event エレメントを nexaweb-client.xml に追加

このエレメントには、クライアントでの最新のイベントを記憶するかどうかを指定します。このエレメントは、レガシーなアプリケーションで必要となる場合があり追加されました。デフォルト値は、 false です。

修正項目 (Java)

8995

712-5302944 - RequestService().openBrowser(url) はパラメータをひとつだけとる

10276

JRE1.6.0_10 との互換性: Java SE 6 の次世代プラグインが利用されているとき、キーボードの入力に反応しなくなる

10290

JRE1.6.0_10 との互換性: Java SE 6 の次世代プラグインが利用されているとき、モーダルダイアローグを追加すると複数回フラッシュする

10329

gridTable の互換性: cell でないウィジェットがマウスのクリックに正しく反応しない

10332

Nexaweb アプリケーションがアプリケーションサーバで、正常にアンデプロイされない

10336

gridTable: rowSpan や colSpan を使って結合した cell がソートされる

10351

互換性についての要求項目: ClientEvent に null を設定しない

10352

互換性: Nexaweb のウィジェットから Swing ウィジェットにフォーカスが移ったとき onBeforeActiveLost イベントが発生しないといけない

10353

互換性: MCO によって disabled 属性が変更されたときウィジェットが disabled にならない

10385

Nexawebアプリケーションが停止したとき、LogConsumerQueueProcessor スレッドが破棄されない

10386

tabPaneのスクロール: スクロールボタンが最後のタブまで表示しない

10387

tabPaneのスクロール: すべてのタブが表示されていてもボタンが表示されたままとなる

10388

tabPaneのスクロール: tabOverlap 属性を設定してもスクロールボタンの表示が変わらない

10389

tabPaneのスクロール: tab を直接追加したときにスクロールボタンが表示されない

10395

tabPaneのスクロール: tab が最後まで表示されているときスクロールボタンを disable にする

10401

tabPaneのスクロール: 表示されていない tab があるにもかかわらずスクロールしなくなる

10404

BTH-781049 table の属性を変更したときにデッドロックとなる

10406

tabPaneのスクロール: replace-children で ArrayIndexOutOfBoundsException が発生する

10408

互換性: horizontalToolBar や verticalToolBar にあるウィジェットで例外が発生する

10409

tabPaneのスクロール: 追加した tab の一部が表示されたときにスクロールボタンが表示されない

10411

互換性: column のソート属性を指定すると例外が発生する

10413

互換性: com.nexaweb.client.component.treetable.NTableCrossSection.fire11PropertyChange で NullPointerException が発生する

10416

tabPaneのスクロール: tabPane が horizontalFlowPane の子要素とき、tab が動き続ける

10418

table 内の cell の tooltip の表示位置がマウスの位置に追随しない

10426

tabPaneのスクロール: ブラウザでスクロールボタンが正しく表示されない

10427

tabPaneのスクロール: 選択されている最後の tab が表示されない

10429

tabPaneのスクロール: MS JVM で NoSuchMethodError が発生する

10431

tabPaneのスクロール: 左のスクロールボタンが enabled になるべきときに disabled となる

10432

tabPaneのスクロール: 右のスクロールボタンが disabled になるべきときに enabled となる

10433

tabPaneのスクロール: 右のスクロールボタンが enabled になるべきときに disabled となる

10437

tabPaneのスクロール: すべての tab が表示されているのにスクロールボタンが表示される


修正の詳細 (Java)

8995

712-5302944 - RequestService().openBrowser(url) はパラメータをひとつだけとる

環境

OS

:

全て

ブラウザ

:

全て

JVM

:

全て

Nexaweb Platform

:

全て

対象

以下の条件を全て満たしている場合。

  • Standalone Client(NexawebStandaloneClient.jar ファイル。Studio のメニューから "Run Page", "Debug Page" を指定して起動されるクライアントエンジン) を使用している場合。

  • RequestService(NetService) API の openBrowser() メソッドを使用している場合。

  • openBrowser() メソッドの対象となる URL に複数のパラメータ(例: page.jsp?param1=AAA&param2=BBB)が指定されている場合。

事象
内容

複数のパラメータを URL として指定している場合、全てのパラメータが正しく指定された状態でブラウザを開くことができない。
複数パラメータを指定して openBrowser() メソッドを呼び出しても単一のパラメータのみが指定されている状態でブラウザが開いてしまう。

修正
内容

Standalone Client を使用している場合に、複数パラメータを URL に指定して openBrowser() メソッドを使用した場合に、全てのパラメータが正しく指定された状態でブラウザを開くように修正。

10276

JRE1.6.0_10 との互換性: Java SE 6 の次世代プラグインが利用されているとき、キーボードの入力に反応しなくなる

環境

OS

:

全て

ブラウザ

:

全て

JVM

:

1.6.0_10~

Nexaweb Platform

:

全て

対象

JRE 1.6.0_10 以上を使用しており、「次世代 Java Plug-in」が有効な場合に、 DisplayService API の modalAlert(), modalCustomButtonAlert(), modalInputAlert() メソッドを使用している場合。

事象
内容

DisplayService API の modalAlert(), modalCustomButtonAlert(), modalInputAlert() メソッドによって表示されるモーダルアラート上で、キーボードオペレーションが有効でなくなる。
Enter キー、 TAB キーなどのキー入力が有効でなくなる。

修正
内容

モーダルアラート上でキーボードオペレーションが有効になるように修正。

10290

JRE1.6.0_10 との互換性: Java SE 6 の次世代プラグインが利用されているとき、モーダルダイアローグを追加すると複数回フラッシュする

環境

OS

:

全て

ブラウザ

:

全て

JVM

:

1.6.0_10~

Nexaweb Platform

:

全て

対象

JRE 1.6.0_10 以上を使用しており、「次世代 Java Plug-in」が有効な場合に、 DisplayService API の modalAlert(), modalCustomButtonAlert(), modalInputAlert() メソッドを使用している場合。

事象
内容

DisplayService API によって表示されるモーダルアラートのタイトルバーが複数回にわたって点滅する。
モーダルアラートを表示した場合に、アクティブウインドウがブラウザウインドウから、モーダルアラートに変更されるため、タイトルバー自身の点滅は発生するが、この問題は点滅が通常よりも多く点滅する問題になります。

修正
内容

モーダルアラートの点滅を回数を抑制するように修正。

10329

gridTable の互換性: cell でないウィジェットがマウスのクリックに正しく反応しない

環境

OS

:

全て

ブラウザ

:

全て

JVM

:

全て

Nexaweb Platform

:

4.5.19~

対象

セルデータとして <cell/> ではなく、 <checkBox/> などの通常の UI コンポーネントが使用されている <gridTable/> のデータを一度削除して、データを追加した場合。

事象
内容

データを一度削除した後に、データを追加した場合、追加されたデータの <cell/> 以外の UI コンポーネントに対してマウスオペレーションが有効でなくなる。
例えば、 <cell/> の変わりに <checkBox/> を使用している場合、 <checkBox/> は通常マウスクリックによってチェックすることが可能であるが、この問題が起こった場合、 削除後に追加されたデータに対してマウスオペレーションによって <checkBox/> をチェックすることができなくなる。

修正
内容

データ削除後に、追加されたデータに対してもマウスオペレーションが有効になるように修正。

10332

Nexaweb アプリケーションがアプリケーションサーバで、正常にアンデプロイされない

環境

OS

:

全て

アプリケーションサーバー

:

全て

JVM

:

全て

Nexaweb Platform

:

全て

対象

サーバースレッド : LogConsumerQueueProcessor(com.nexaweb.common.log.ConsoleLogConsumer)

事象
内容

アプリケーションサーバーのホットデプロイ機能(サーバーを再起動せずにアプリケーションのアンデプロイ/デプロイが可能な機能。ホットデプロイメントな どメーカによって表記が異なる可能性があります)を使用して Nexaweb アプリケーションが含まれる war/ear ファイルをアンデプロイ/デプロイしようとした場合に、 Nexaweb アプリケーションを正常にアンデプロイすることができない。
LogConsumerQueueProcessor(com.nexaweb.common.log.ConsoleLogConsumer) スレッドが正常に終了せずにアンデプロイ実行後にアプリケーションサーバー上に残り続けてしまう。

修正
内容

アンデプロイ時に LogConsumerQueueProcessor(com.nexaweb.common.log.ConsoleLogConsumer) スレッドが正常に終了するように修正。
この問題の実際の修正は 10385 にて行われています。

10336

gridTable: rowSpan や colSpan を使って結合した cell がソートされる

環境

OS

:

全て

ブラウザ

:

全て

JVM

:

全て

Nexaweb Platform

:

全て

対象

結合セルをデータとして保持している <gridTable/>

事象
内容

結合セルを含むデータを保持している <gridTable/> ではテーブルデータのソート機能が無効になる仕様であるが、テーブルデータをソートすることができてしまう。
以下は、<gridTable/> のソートの仕様になります。

  • 結合セルを含まないテーブルデータだけの場合、テーブルデータのソートが可能。

  • 結合セルを含むデータがテーブルデータとして存在している場合、ヘッダをマウスクリックしてもテーブルデータはソートされない。

通常、結合セルがテーブルデータに含まれる場合、上記の仕様に則りテーブルデータをソートすることはできませんが、以下の場合にテーブルデータをソートすることができてしまう。

  • 結合セルを含まないテーブルデータだけの状態で、テーブルデータをソートした後に結合セルを含むテーブルデータを追加した場合。

  • ユーザープログラム(MCO, Macro)から <column/> に対して sort 属性を設定した場合。

修正
内容

<gridTable/> のソート機能の有効/無効を判断する処理を以下の場合にも追加し、結合セルを含むテーブルデータが存在する場合に必ずテーブルデータがソートされないように修正。

  • テーブルデータの追加時に結合セルデータが含まれていた場合に、ソート機能の有効/無効をチェック。

  • ユーザープログラム(MCO, Macro)から <column/> に対して sort 属性が設定された場合に、ソート機能の有効/無効をチェック。

10351

互換性: ClientEvent に null を設定しない

環境

OS

:

全て

ブラウザ

:

全て

JVM

:

全て

Nexaweb Platform

:

4.5.22~

対象

ClientEvent オブジェクトのスコープ

事象
内容

Nexaweb Platform 4.5.22MR の 10247 の修正のために、イベント処理を行うメソッドの実行が終了した後に EventHandler API の getClientEvent() で参照される ClientEvent オブジェクト自身をクリアする振る舞いの変更によって既存プログラムで参照していた ClientEvent オブジェクトが null になる。

修正
内容

ClientEvent の扱いが 4.5.21 以前と同様になるように修正。
この問題を解決するために過去の振る舞いとの互換性を確保するための以下のオプションが nexaweb-client.xml に追加されました。

/client-app/keep-last-client-event
keep-last-client-event は以下の二つの値を設定することができます。

  • true : ClientEvent オブジェクトを次にイベントが発生するまでの間、保持し続けます。

  • false : ClientEvent オブジェクトをイベント処理を行うメソッドの実行が終了した後に null でクリアします。

4.5.21 以前と同じ振る舞いを期待する場合には「true」を指定してください。
Nexaweb Platform 4.5.22MR の 10247 によるメモリ使用の問題を解決する場合には「false」を指定してください。

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

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


nexaweb-client.xml の設定例(抜粋)

<client-app>        ...         <!-- =================================================================== -->        <!-- Indicates whether or not to keep the last client event which was    -->        <!-- fired.                                                              -->        <!-- This may be set to true if a legacy application requires the event  -->        <!-- to remain in memory after an event fires.  This will cause all      -->        <!-- memory structures related to the event to be held until the next    -->        <!-- event occurs, so it should be used with caution in applications     -->        <!-- with large memory requirements.                                     -->        <!-- =================================================================== -->        <keep-last-client-event>false</keep-last-client-event>        ... </client-app>               

10352

互換性: Nexaweb のウィジェットから Swing ウィジェットにフォーカスが移ったとき onBeforeActiveLost イベントが発生しないといけない

環境

OS

:

全て

ブラウザ

:

全て

JVM

:

全て

Nexaweb Platform

:

4.5.21~

対象

SwingBridge を使用して SwingBridge とマッピングされるタグに onBeforeActiveLost イベントを設定している場合。

事象
内容

SwingBridge によって作成されている UI コンポーネントからフォーカスが失われた場合に onBeforeActiveLost イベントが発生しなくなる。
Nexaweb Platform 4.5.20 を使用している場合は onBeforeActiveLost が発生していました。

修正
内容

この問題は、 Nexaweb Platform 4.5.21MR の 10269 の修正によって生じるようになった互換性問題になります。
Swing コンポーネントからフォーカスが失われた場合に onBeforeActiveLost イベントが発生する用に修正。

10353

互換性: MCO によって disabled 属性が変更されたときウィジェットが disabled にならない

環境

OS

: