5.2.7. コンポーネント名


すべての Seam コンポーネントには名前が必要です。 @Name アノテーションを使用してコンポーネントに名前を割り当てます。
@Name("loginAction") 
@Stateless 
public class LoginAction implements Login { ... }
Copy to Clipboard Toggle word wrap
これが Seam コンポーネント名 で、 EJB 仕様で定義された他の名前との関連はありません。 しかし、Seam コンポーネント名は JSF 管理 Bean 名のような働きをするため、 同一の条件と考えることができます。
@Name だけがコンポーネント名を定義する唯一の方法ではありませんが、 この名前は常に指定しなければなりません。 名前が定義されていないと他の Seam アノテーションが機能しません。
Seam はコンポーネントのインスタンス化を行うときに、 その新しいインスタンスをコンポーネントの設定スコープ内のコンポーネント名と一致する変数にバインドします。 これは Seam により XML ではなくアノテーションでこのマッピングを設定できるという点以外、 JSF 管理 Bean の動作とまったく同じです。 また、 プログラムによってコンポーネントをコンテキスト変数にバインドすることもできます。 これは特定の 1 コンポーネントがシステム内で複数のロールを担っている場合に便利です。 たとえば、 現在の UsercurrentUser セッションコンテキスト変数にバインドする一方、管理機能の対象となる Useruser 対話コンテキスト変数にバインドすることがあります。 Seam コンポーネントを参照するコンテキスト変数を上書きすることは可能なため、プログラムによってバインドを行う場合は注意してください。
非常に大規模なアプリケーションの場合や組み込み Seam コンポーネントの場合には、 命名競合を避けるため修飾コンポーネント名がよく使用されます。
@Name("com.jboss.myapp.loginAction") 
@Stateless 
public class LoginAction implements Login { ... }
Copy to Clipboard Toggle word wrap
Java コードや JSF の式言語中でも修飾コンポーネント名を使用することができます。
<h:commandButton type="submit" value="Login" 
   action="#{com.jboss.myapp.loginAction.login}"/>
Copy to Clipboard Toggle word wrap
これは混雑しているため、Seam は修飾名を簡易名にエイリアスする機能も提供しています。 以下のような行を components.xml ファイルに追加します。
<factory name="loginAction" scope="STATELESS" 
         value="#{com.jboss.myapp.loginAction}"/>
Copy to Clipboard Toggle word wrap
すべての組み込み Seam コンポーネントには修飾名がありますが、 Seam の 名前空間をインポートする 機能によって非修飾名でもアクセスすることができます。 Seam JAR に含まれる components.xml ファイルは以下の名前空間を定義します。
<components xmlns="http://jboss.com/products/seam/components"> 
  <import>org.jboss.seam.core</import> 
  <import>org.jboss.seam.cache</import> 
  <import>org.jboss.seam.transaction</import> 
  <import>org.jboss.seam.framework</import> 
  <import>org.jboss.seam.web</import> 
  <import>org.jboss.seam.faces</import> 
  <import>org.jboss.seam.international</import> 
  <import>org.jboss.seam.theme</import> 
  <import>org.jboss.seam.pageflow</import> 
  <import>org.jboss.seam.bpm</import> 
  <import>org.jboss.seam.jms</import> 
  <import>org.jboss.seam.mail</import> 
  <import>org.jboss.seam.security</import> 
  <import>org.jboss.seam.security.management</import>  
  <import>org.jboss.seam.security.permission</import> 
  <import>org.jboss.seam.captcha</import> 
  <import>org.jboss.seam.excel.exporter</import> 
  <!-- ... ---> 
</components>
Copy to Clipboard Toggle word wrap
非修飾名の解決を試行すると、 Seam は順にそれぞれの名前空間を調べます。 アプリケーション固有となる追加の名前空間をアプリケーションの components.xml ファイルに含めることができます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat