別のブラウザで表示すると、JavaScriptによってこのドキュメントの表示形式が変わる場合があります。ただしドキュメントの内容に影響はありません。

UIX開発者ガイド Go to Table of Contents
目次
Go to previous page
前へ

付録: JDeveloper 9.0.2からの変更点

この付録ではJDeveloper 9.0.2からのUIXに対する変更点を説明します。ここでは、次の項目について説明します。

汎用UIXフレームワークの改善点

汎用UIXフレームワークでは次のような領域が改善されました。

部分ページ・レンダリング

エンド・ユーザーはほとんどのWebページで、ページのある一部が更新されるようなアクションを実行することができます。たとえば、ボタンをクリックすると新しい行が表データに追加されるような場合です。もしくは、値リストから項目を選択することによって、ページ内の他のコンポーネントが非表示になったり、表示されたり、ユーザーの選択肢に基づく新しい値が移入されたりする場合もあります。これらのアクションは、ユーザーが現行ページを離れまったく新しいページに移動するような通常のナビゲーションとは異なります。そのアクションを実行した後は、かぎられた変更のみを反映して同じページが再表示されるのです。現在のUIXベースのアプリケーションでは、カスタムJavaScriptコードを記述するか全ページ・リフレッシュを実行して、このような機能性を実装する必要があります。この方法は両方とも問題があります。

カスタムJavaScriptコードを記述することによって、アプリケーションは対話性がより向上したユーザー操作を提供できます。ただし、このような機能性の実装を各アプリケーションで必須にすると、開発リソースがムダに消費されエラーも起こりやすくなります。また、純粋なクライアント側JavaScriptソリューションは、一般的にすべての最新の値に関する知識が必要となるため、かぎられた場合にしか使用されません。たとえば、ユーザーの選択に応じて依存フィールドを更新するとき、依存フィールドのすべての可能な値が、ページの最初のレンダリング時にブラウザに送信される必要があります。これによって、エンド・ユーザーが見たこともないデータの問合せがしばしば必要になるため、ページ・サイズは大きくなりページ生成時間も遅くなります。

最も単純なソリューションは、アプリケーションがユーザー・アクションに応じて全ページ・リフレッシュを実行することです。このソリューションは実装がはるかに容易ですが、完全リフレッシュの実行は効率的ではありません。ページのごく一部がユーザー・アクションによる影響を受けるときでも、全ページ・リフレッシュでは、変更されないクロムや周囲コンテンツもすべて含めてページ全体が再生成されます。結果として、全レンダリングが終了するまで空白ページがずっとユーザーに表示されることになります。さらに不都合なことに、新しいページがロードされた直後、ブラウザはデフォルトでページ最上部までスクロールして戻ります。結果的に、ユーザーは前後関係を見失い、それまでの作業がわからなくなります。

部分ページ・レンダリングは、これらのソリューションのより重大な欠点のいくつかを回避する一方、両者のいくつかの利点も提供します。部分ページ・レンダリングを起動するアクションをユーザーが実行すると、ページのある一部が再レンダリングされる必要があることを示すリクエストが、アプリケーションに対して送られます。アプリケーションはページのこの部分のみを再生成し、ページにマージしなおすためこの新しい部分コンテンツをブラウザに送信します。

部分ページ・レンダリングは他のソリューションよりもいくつかの利点があります。

UIX 9.0.3ではこの機能性が提供され、アプリケーション開発者が追加作業を行う必要もありません。部分ページ・レンダリングを可能にするコア・テクノロジを提供する以外に、UIX 9.0.3は、部分ページ・レンダリングを透過的に有効にするためUIXのTableBeanやHideShowBeanなどの既存コンポーネントも強化します。将来のリリースではより多くのコンポーネントがサポートされる予定です。部分ページ・レンダリングはMozilla 1.0やNetscape 7.0だけでなくInternet Explorer 5.5以上でもサポートされていますが、旧バージョンのブラウザでは通常、全ページ・レンダリングが処理されます。

uiXMLとStrutsの統合

Strutsフレームワークは、現在ではJ2EE Webアプリケーションを構築するための最も一般的なフレームワークの1つです。Strutsの開発者はページにJSPを頻繁に使用しますが、Strutsでは別の表示テクノロジの使用もサポートされています。UIX 9.0.3で提供される一連の拡張機能により、Strutsアプリケーションの一部またはすべてに対してuiXMLを使用できます。また、標準的なStrutsのアクション、ActionForm Beansおよび構成ファイルをすべて使用して、uiXMLベースのアプリケーションを制御できます。詳細は、UIX開発者ガイドの新しいトピックである「Strutsを利用したuiXMLの使用方法」を参照してください。

XML構成ファイル

新規のuix-config.xmlファイルを使用すると、開発者はコード行を記述せずにConfigurationオブジェクトのセットを作成し、コードを再コンパイルせずにフィールドの構成プロパティを更新できます。この特長はサーブレット2.1以上を使用している開発者のみに適用されるため、Apache JServにデプロイされたアプリケーションでは引き続きJavaコードを使用する必要があります。

標準のWEB-INFディレクトリに保存されているuix-config.xmlファイルでは、Configurationオブジェクトには設定されないいくつかのプロパティの構成も可能です。特に重要なのは、UIExtensionsおよびUITテンプレート・ライブラリの自動登録をサポートすることです。また、9.0.2では簡単に利用できなかったいくつかのデバッグ機能(適切にインデントされたHTMLなど)への直接的アクセスも提供されます。このファイルの特長および書式の詳細は、UIX開発者ガイドの改訂された「構成」トピックを参照してください。

JavaBeansサポートの改善

UIXのデータ・バインド・アーキテクチャはJavaBeansとの親和性が非常に高くなりました。この変更は汎用的なもので、Java API、uiXMLインタフェースおよびUIX JSPタグ・ライブラリなどにも反映されます。

以前uiXMLやJSPタグでDataObjectが必要だった場所ではどこでも、開発者がJavaBeansインスタンスを渡すと、UIXでは自動的にメソッド(およびpublic変数)のイントロスペクションが行われプロパティが検出されます。UIXでは、(HashMapHashtableなどの)java.util.Mapインタフェースを実装するオブジェクトも自動的にサポートします。以前uiXMLやJSPタグでDataObjectListが必要だった場所ではどこでも、開発者が配列またはjava.util.ListArrayListVectorなど)を渡すと、UIXでは透過的にそのオブジェクトをDataObjectListに変換します。

プロセスは再帰的です。このため、それ自身がBeansであるBeanプロパティはDataObjectを含むDataObjectに自動的に変換され、Beans配列は自動的にDataObjectListに変換されます。

最後に、MethodDataProviderはもうDataObjectを返す必要はありません。どのようなオブジェクトが返されても、前述したようにUIXが適用を実行します。

UIXは、この自動イントロスペクションに必要なより負荷の高いオブジェクトを大量にキャッシュします。このため、パフォーマンスは通常は適用範囲内ですが、特に重要なデータソースのパフォーマンスについては開発者が最適化できるような機能がUIXには用意されています。

この新機能の詳細は、UIX開発者ガイドの「データ・バインド」トピックの「より簡単な方法: Beansへのバインド」を参照してください。

新しいUIXコンポーネント

新しい<lovInput>および<listOfValues>コンポーネントによって強力な値リストをはるかに容易に出力できるようになり、これらは部分ページ・レンダリングと統合されます。

<sideBar><styledList>および<styledItem>の3つの新しいコンポーネントによって、以前の<sideNav>コントロールで提供されたものよりはるかに豊富な、ページのサイド・ナビゲーション領域を構築するオプション・セットが提供されます。<hideShow>は、<sideBar>の内部で使用できる新しいselected属性もサポートします。

<hideShow>は、表示/非表示コントロールのデフォルト・ラベルを置き換えられる、新しい子<prompt>もサポートします。

<pageLayout>には他にもコンテンツを挿入できる6つのスロットがあります。

<pageLayout>は、メッセージ表示ページを構築するmessageType属性もサポートします。

<switcher>は、いくつかの共通するケースを記述しやすくする子<default>をサポートします。

<displayException>要素を<try>/<catch>の内部で使用すると、問題のデバッグについてより詳しい情報を得ることができます。

テキストの書式設定のサポート

メッセージ・テキストにはHTML書式設定タグの固定セットが含まれるようになりました。これは、メッセージ・ボックスに表示されるテキストと、UIXメッセージBeansのmessageおよびtip属性として表示されるテキストのみをサポートします。

指定されたメッセージが書式設定情報を含むことを示すためには、メッセージが<html>で始まり、</html>で終わる必要があります。たとえば、文中の1つの単語を太字にする場合、メッセージは次のようになりました。


   String messageString = "<html>One word <b>here</b> is bold.</html>";

新しい<formattedText>コンポーネントを使用すると、ページ上のどこででもこの機能性を利用できます。開始と終了に<html>も必要ありませんが、これが含まれていても問題はありません。

次のHTMLの要素、属性およびエンティティがサポートされています。

このリストにない要素、属性およびエンティティは、自動的にコンテンツから取り除かれ無視されます。これによって、書式設定されたテキストがブラウザ以外のデバイスで適切にレンダリングされます。また、RAW HTMLを介した出力コードに存在する可能性があるセキュリティ・ホールのリスクも回避できます。入力HTMLが変更されずに出力されるという保証はありません。たとえば、入力テキストでは開いたままであっても、パラグラフとリスト項目要素はいつも閉じられます。他のHTMLマークアップが、現在のルック&フィールまたはユーザー・エージェントにより適切な出力で置き換えられる場合があります。

新しい<media>コントロール

メディア・コントロールは、ユーザー・エージェントに埋め込まれたプレーヤにオーディオ、ビデオまたはイメージなどのメディア・コンテンツを表示します。メディア・コントロールは、source属性で指定されたメディアを適切なメディア・プレーヤで表示します。特定のメディア・プレーヤが求められている場合は、player属性を使用して指定できます。メディア・コントロールは、プラットフォーム間のメディア表示に関する2つの微妙な観点を論理的に処理します。2つの点とは、メディアの表示に最適なプレーヤの決定と、メディア・プレーヤのサイズ設定です。

メディア・コントロールは、次の手順で適切なメディア・プレーヤを選択します。

  1. コンテンツの主なMIMEタイプがimageの場合、ビルトインのユーザー・エージェント・サポートが使用されます。
  2. メディア・プレーヤがplayer属性で指定されていて、そのプレーヤがユーザー・エージェントで使用可能でありメディア・リソースを表示できる場合、そのプレーヤが使用されます。
  3. あるプレーヤがメディア・リソースの再生に特に優れていて、そのプレーヤがユーザー・エージェントで使用可能な場合、そのプレーヤが使用されます。
  4. あるプレーヤがユーザー・エージェントで特に支配的で、そのプレーヤがメディア・リソースを再生できる場合、そのプレーヤが使用されます。

印刷可能ページのサポート

UIX 9.0.3では新しい「ファセット」という概念がサポートされています。ファセットはルック&フィールの可変値です。9.0.3でサポートされているファセットの1つがprintableファセットで、これはページ周囲のクロムのほとんどを削除することによって出力を印刷用に最適化します。ファセットは、プログラムによって設定することも、uiXML内で宣言的に設定することもできます。

    <button ctrl:event="printMe"/>

    ...
  <handlers>
    <event name="printMe">
      <showFacet name="printable"/>
    </event>
  </handlers>

この他にUIX 9.0.3では、標準的なUIXページの印刷性に影響する問題を修正します。

広範囲のユーザー・エージェントのサポート

Pocket PCは現在サポートされているプラットフォームの1つです。すべてのコンポーネントがサポートされているわけではなく、サポートされているコンポーネントのすべての属性がサポートされているわけでもありません。UIX要素リファレンスではサポートされていない属性およびコンポーネントが示されています。

MacOSのInternet Explorer 5のレンダリングは大幅に改善され、このプラットフォームは現在、完全にサポートされています。

右から左方向の言語におけるレンダリングの質も改善されましたが、これは今現在、Windows上のInternet Explorerでのみサポートされています。

その他

HTMLサイズは多数の共通ケースで大幅に改善されました。新しいアクセシビリティ・モード機能を使用すると、あるユーザー向けにはアクセシビリティ機能を無効にしてHTMLサイズをより小さくすることができます。

フォームを送信できるコンポーネントはすべてunvalidated属性をサポートするようになりました。(9.0.2では一部でしかサポートされていませんでした。)

読取り専用の複数行の<textInput>は、外観が大幅に改善されました。

9.0.2のUIXにはjava.lang.Stringに対する多数のブラインド・キャストが含まれていました。現在はより正確にするためtoString()が使用されています。

カレンダ・ダイアログへの修正では、タイムゾーンおよび開始日に関する以前の問題も修正されています。

UIX Controllerは、例外の根本的原因をそのまま甘受しないという面で改善されています。実際には、ユーザーがより詳細なエラー・メッセージを受け取る場合があることを意味しています。

BC4J uiXMLの改善点

BC4J uiXMLでは次のような領域が改善されました。

新しい<bc4j:rowStamp>要素

UIXではビュー・オブジェクトの行の反復処理が簡単になりました。<bc4j:rowStamp>要素は<bc4j:viewObjectScope>内部に配置でき、行ごとにコンテンツを1回スタンプします。


  <bc4j:viewObjectScope name="yourVO">
    <bc4j:rowStamp>
      One of these per row!
    </bc4j:rowStamp>
  </bc4j:viewObjectScope>

これはBC4J uiXMLに対して最も望まれていた機能拡張でした。

新しい<bc4j:attrValue>要素

<bc4j:attrScope>を使用せずに属性値に対してバインドすることが可能になりました。1つのUIX要素の2つの属性を、BC4J行の2つの別の属性にバインドできます。


  <link>
    <boundAttribute name="text">
      <bc4j:attrValue name="textAttr"/>
    </boundAttribute>
    <boundAttribute name="destination">
      <bc4j:attrValue name="urlAttr"/>
    </boundAttribute>
  </link>

これはBC4J uiXMLに対して2番目に望まれていた機能拡張でした。

新しい<bc4j:option>要素および<bc4j:optionList>要素

UIXでは<bc4j:rowStamp>および<bc4j:attrValue>を利用して、新しい<bc4j:option>要素および<bc4j:optionList>要素を組み込むようになりました。これらの新しい要素によって、使用可能なオプションをビュー・オブジェクトから動的にロードする、選択肢およびリストの構築がはるかに容易になります。次に例を示します。

  <bc4j:choice attrName="job">
    <bc4j:contents>
      <bc4j:optionList voName="JobListVO"
                          attrName="jobId"
                          textAttrName="jobName"/>
    </bc4j:contents>
  <bc4j:choice> 

interMediaのサポート

UIX 9.0.3では、BC4J interMediaのサポートを追加することでBC4Jデータ・バインドが改善されています。これを使用すると、豊富なマルチメディア・コンテンツをデータベースに直接格納し、BC4J interMediaドメインを介してUIXページに表示することができます。UIXのビルトイン・サポートによって、特にイメージ、オーディオおよびビデオなどのタイプに対するいくつかのuiXML要素が新しく追加されています。この機能の詳細は、UIX開発者ガイドの新しいトピックである「メディア」を参照してください。

CLOB列のサポート

CLOB列は正しく表示され編集されるようになりました。

Javaコードとの統合の改善

UIX 9.0.2では、BC4J uiXMLと相互に作用するデータ・プロバイダおよびイベント・ハンドラでJavaコードを記述するのは困難でした。2つの新しいクラス、UIBindingUtilsおよびServletBindingUtilsによってこれが非常に容易になります。これらのクラスによって、RenderingContextまたはBajaContextから、現在のスコープ内のAttributeDefRowViewObjectまたはApplicationModuleに移動することができます。

CPXデータ定義ファイルのサポート

UIXは新しい .cpxデータ定義ファイル形式をサポートするようになりました。開発者は、(configNameおよびdefFullNameを設定するのではなく)<bc4j:rootAppModuleDef>の新しいdefinition属性で、名前付き定義を使用するように設定できます。

ローカライズ・サポートの改善

UIXでの数字の解析および書式設定の際における、正しい小数点およびグループ・セパレータの使用がはるかに改善されました。

また、正しくローカライズおよびカスタマイズされたエラー・メッセージが使用されるようになりました。ただし、この機能を利用する開発者は、旧バージョンのフォームにおける次のような<catch>ブロックをすべて変更する必要があります。

<try>
  ...
  <catch>
    <header messageType="error">
      <boundAttribute name="text">
        <contextProperty select="ui:currentThrowable"/>
      </boundAttribute>
    </header>
  </catch>
</try>
これを次のように変更します。
<try>
  ...
  <catch>
    <displayException/>
  </catch>
</try>

等価性の検索のサポート

<bc4j:findByExample>要素はSQLと同様の比較のみをサポートしていました。新しいcomparison属性をequalsに設定して等価性の比較を使用できます。

uiXMLの改善点

uiXMLの改善点についてはほとんど前述しましたが、その他に次のような点があります。

UIX JSPの改善点

UIX JSPタグは、以前XMLおよびJavaに制限されていた機能のほとんどをサポートしています。次に例を示します。

その他の改善点として、次のものがあります。

これらの新しい機能の追加にもかかわらず、UIXは広範囲の下位互換性を保持しています。ただし9.0.2タグ・ライブラリの一部の動作については互換性を保持できませんでした(機能は完全にスーパーセットとなっています)。特に、id属性の値にはもう空白が含まれません。