6.5. XML 名前空間の使用


前述の例では 2 種類のコンポーネント宣言メソッドを XML 名前空間を使うものと使わないものに修正しています。 以下に名前空間を使用しない典型的な components.xml ファイルを示します。
<?xml version="1.0" encoding="UTF-8"?>
<components xmlns="http://jboss.com/products/seam/components"
            xsi:schemaLocation=
              "http://jboss.com/products/seam/components 
               http://jboss.com/products/seam/components-2.2.xsd">

  <component class="org.jboss.seam.core.init">
    <property name="debug">true</property>
    <property name="jndiPattern">@jndiPattern@</property>
  </component>
    
</components>
Copy to Clipboard Toggle word wrap
ご覧の通りこのコードは冗長です。 さらにコンポーネントと属性の名前がデプロイメント時に確認できません。
名前空間を使用すると、
<?xml version="1.0" encoding="UTF-8"?>
<components xmlns="http://jboss.com/products/seam/components"
            xmlns:core="http://jboss.com/products/seam/core"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation=
              "http://jboss.com/products/seam/core 
               http://jboss.com/products/seam/core-2.2.xsd 
               http://jboss.com/products/seam/components 
               http://jboss.com/products/seam/components-2.2.xsd">

  <core:init debug="true" jndi-pattern="@jndiPattern@"/>

</components>
Copy to Clipboard Toggle word wrap
スキーマ宣言は冗長ではありますが、 XML の内容自体は簡潔かつ理解しやすいものになります。 このスキーマは各コンポーネントと利用可能な属性に関する詳細情報を与えて、 XML エディタによるインテリジェントな自動補完入力を可能にします。 名前空間付きのエレメントの使用により、適切な components.xml ファイルの生成と保守が容易になります。
これは組み込みの Seam コンポーネントに対しては良く機能しますが、 ユーザーのコンポーネントに対してはオプションが 2 つあります。 最初に Seam は両方の混在したモデルに対応することで、ユーザーのコンポーネントには汎用の <component> 宣言を使用できるようにし、 また組み込みコンポーネントには名前空間が付いた宣言が使用できるようにしています。 さらに重要な点は、 Seam により独自のコンポーネントに対して簡単に名前空間を宣言できるということです。
いずれの Java パッケージにも @Namespace アノテーションをパッケージに付加することによって XML 名前空間を関連付けることができます (パッケージレベルのアノテーションはパッケージディレクトリ内の package-info.java という名前のファイルに宣言します)。seampay デモからの例を示します。
@Namespace(value="http://jboss.com/products/seam/examples/ seampay") package org.jboss.seam.example.seampay; import org.jboss.seam.annotations.Namespace;
Copy to Clipboard Toggle word wrap
components.xml で名前空間のスタイルを使用するのはこんなに簡単です。 次のように記述できます。
<components xmlns="http://jboss.com/products/seam/components"
            xmlns:pay="http://jboss.com/products/seam/examples/seampay"
            ... >

  <pay:payment-home new-instance="#{newPayment}"
       created-message="Created a new payment to #{newPayment.payee}" />

  <pay:payment name="newPayment"
               payee="Somebody"
               account="#{selectedAccount}"
               payment-date="#{currentDatetime}"
               created-date="#{currentDatetime}" />
     ...
</components>
Copy to Clipboard Toggle word wrap
または、
<components xmlns="http://jboss.com/products/seam/components"
            xmlns:pay="http://jboss.com/products/seam/examples/seampay"
            ... >

  <pay:payment-home>
    <pay:new-instance>"#{newPayment}"</pay:new-instance>
    <pay:created-message>
      Created a new payment to #{newPayment.payee}
    </pay:created-message>
  </pay:payment-home>
    
  <pay:payment name="newPayment">
    <pay:payee>Somebody"</pay:payee>
    <pay:account>#{selectedAccount}</pay:account>
    <pay:payment-date>#{currentDatetime}</pay:payment-date>
    <pay:created-date>#{currentDatetime}</pay:created-date>
   </pay:payment>
   ...
</components>
Copy to Clipboard Toggle word wrap
前述の例では名前空間付きエレメントの 2 種類の使用モデルを説明しています。 最初の宣言では <pay:payment-home>paymentHome コンポーネントを参照しています。
package org.jboss.seam.example.seampay;
...
@Name("paymentHome")
public class PaymentController extends EntityHome<Payment> {
  ... 
}
Copy to Clipboard Toggle word wrap
そのエレメント名はコンポーネント名をハイフンで連結した形式です。 そのエレメントの属性はプロパティ名をハイフンで連結した形式です。
2 番目の宣言では、 <pay:payment> エレメントが org.jboss.seam.example.seampay パッケージにある Payment クラスを参照しています。 この場合 Payment は Seam コンポーネントとして宣言されているエンティティです。
package org.jboss.seam.example.seampay;
...
@Entity
public class Payment implements Serializable {
  ...
}
Copy to Clipboard Toggle word wrap
ユーザー定義のコンポーネントに対して妥当性検証と自動補完入力を機能させるにはスキーマが必要になります。 Seam は複数のコンポーネントからなるセットに対してはまだスキーマを自動的には生成できないため、 手動で作成しなければなりません。 参考として標準的な Seam パッケージ用のスキーマ定義を使用できます。
次は Seam によって使用される名前空間です。
  • components — http://jboss.com/products/seam/components
  • core — http://jboss.com/products/seam/core
  • drools — http://jboss.com/products/seam/drools
  • framework — http://jboss.com/products/seam/framework
  • jms — http://jboss.com/products/seam/jms
  • remoting — http://jboss.com/products/seam/remoting
  • theme — http://jboss.com/products/seam/theme
  • security — http://jboss.com/products/seam/security
  • mail — http://jboss.com/products/seam/mail
  • web — http://jboss.com/products/seam/web
  • pdf — http://jboss.com/products/seam/pdf
  • spring — http://jboss.com/products/seam/spring
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat