JDeveloperでのJSFマネージドBeanおよび自動コンポーネント・バインディングについて

バッキングBeanは、JSPページのUIコンポーネントに対するロジックとプロパティが含まれているマネージドBeanです。JDeveloperには、コンポーネントをJSF JSPの作成ウィザードのコンポーネント・バインディング・ページに自動的にバインドするオプションが用意されています。このオプションを選択すると、JDeveloperは、作成しているページに対してデフォルトのバッキングBeanを作成し(または選択したマネージドBeanを使用し)、ページに配置したすべてのコンポーネントを、そのBeanの対応するプロパティに自動的にバインドします。関連するアクセッサ・メソッドも作成されます。

ページを作成し、コンポーネントの自動バインドを選択した場合は、JDeveloperによって、次の処理が行われます。

JDeveloperでは、バッキングBeanのプロパティに対する管理プロパティは作成されません。特定のプロパティ値を使用してBeanをインスタンス化する場合は、その構成をfaces-config.xmlファイルで手動で実行する必要があります。

メソッド・バインディングが可能なコンポーネントの自動コンポーネント・バインディング

ページの自動コンポーネント・バインディングは、コマンドおよび入力コンポーネントの次の属性に対するメソッド・バインディング式の入力方法に影響を与えます。

自動コンポーネント・バインディングが無効な場合

JSFページに対して自動コンポーネント・バインディングが無効な場合は、メソッド・バインディング式を受け入れるコンポーネント属性にその式を入力するときに、既存のマネージドBeanを選択するか、新規のバッキングBeanを作成する必要があります。新規のバッキングBeanを作成した場合は、JDeveloperによって、そのBeanがマネージドBeanとしてアプリケーションのfaces-config.xmlに自動的に構成されます。

自動コンポーネント・バインディングが有効な場合

JSFページに対して自動コンポーネント・バインディングが有効な場合は、マネージドBeanを選択する必要はありません。メソッド・バインディング式を受け入れるコンポーネント属性にこの式を入力するときに、ページのバッキングBeanにある既存のメソッドから選択できます。または新規のメソッド名を入力すると、JDeveloperによって、ページのバッキングBeanに新規のスケルトン・メソッドが自動的に作成されます。作成された後、そのメソッドにロジックを追加する必要があります。

また、JSFページのバッキングBeanであるJavaファイルを編集する場合は、メソッド・バインディング・ツールバーがJavaソース・エディタに表示され、適切なメソッドをページ内の選択したコンポーネントに迅速かつ容易にバインドできます。

myfile.jspというファイル名のJSFページを作成したとします。JDeveloperによるデフォルトのマネージドBeanの自動作成を選択した場合は、JDeveloperによって、view.backing.Myfile.javaというバッキングBeanが作成され、ViewControllerプロジェクトの¥srcディレクトリに配置されます。このバッキングBeanはアプリケーション・リソース・ファイル(faces-config.xml)でマネージドBeanとして構成され、デフォルトのマネージドBean名はbacking_myfileとなります。

JSFページに対して自動コンポーネント・バインディングが有効な場合、ページに挿入するコンポーネントは、次のコード・サンプルに示すように、バッキングBeanのプロパティに(binding属性を介して)自動的にバインドされます。

デフォルトのマネージドBeanを使用したJSFページ(myfile.jsp

...
<h:form binding="#{backing_myfile.form1}">
  <h:inputText binding="#{backing_myfile.inputText1}"/>
  <h:commandButton value="button0"
                   binding="#{backing_myfile.commandButton1}"
                   action="#{backing_myfile.commandButton_action}"/>
  ...
</h:form>
...    

デフォルトのバッキングBeanのJavaファイル(Myfile.java

package view.backing;
import javax.faces.component.html.HtmlForm;
import javax.faces.component.html.HtmlCommandButton;
import javax.faces.component.html.HtmlInputText;

public class Myfile 
{
  private HtmlForm form1;

  public void setForm1(HtmlForm form1)
  {
    this.form1 = form1;
  }

  public HtmlForm getForm1()
  {
    return form1;
  }

  private HtmlInputText inputText1;

  public void setInputText1(HtmlInputText inputText1)
  {
  this.inputText1 = inputText1;
  }

  public HtmlInputText getInputText1()
  {
  return inputText1;
  }

  private HtmlCommandButton commandButton1;

  public void setCommandButton1(HtmlCommandButton commandButton1)
  {
    this.commandButton1 = commandButton1;
  }

  public HtmlCommandButton getCommandButton1()
  {
    return commandButton1;
  }

  public String commandButton_action()  
  {    
    // Add event code here...    
    return null;
  }

}    

アプリケーション・リソース・ファイル(faces-config.xml

...
<managed-bean>
  <managed-bean-name>backing_myfile</managed-bean-name>
  <managed-bean-class>view.backing.Myfile</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
</managed-bean>
...    

注意: JSFページをビジュアル・エディタで編集するときは、自動バインド・オプションの有効化/無効化を切り替えたり、マネージドBeanの選択を変更できます。


JSFのアプリケーションおよびコンポーネント・データ・モデルについて
JSFコンポーネントのデータへのバインドについて
イベント、バッキングBeanおよび自動コンポーネントバインディングについて
JSFページでの自動コンポーネント・バインディング用のマネージドBeanの選択
JSFページでのコンポーネント・バインディングの有効化または無効化