コンポーネントのプロパティを動的に設定する場合は、コンポーネント・タグのbinding
属性を使用します。たとえば、ユーザーが社内報にサイン・アップできるチェックボックスをページに表示するとします。この社内報は、管理従業員のみが使用できます。したがって、従業員が管理者でない場合、このチェックボックスは非表示にする必要があります。
JSPコードは、次のようになります。
<h:selectBooleanCheckbox binding="#{employee.managerLetter}" id="newsletter"/>
<h:outputLabel binding="#{employee.managerLetterText}" for="newsletter">
<h:outputText value="Subscribe to Management News"/>
</h:outputLabel>
このコードによって、newsletterコンポーネントは、employee
マネージドBeanのmanagerLetter
プロパティの値にバインドされ、その出力ラベルはmanagerLetterText
プロパティにバインドされます。
EL式を使用してbinding
属性の値にバッキングBeanのプロパティを設定する場合は、コンポーネント・インスタンスをそのプロパティにバインドします。コンポーネントがバインドされるバッキングBeanには、そのプロパティのgetterメソッドとsetterメソッドが含まれている必要があり、そのプロパティはコンポーネントと同じタイプであることが必要です。employee
Beanのコードは、次のようになります。
private HtmlSelectBooleanCheckbox managerLetter;
public void setManagerLetter(HtmlSelectBooleanCheckbox managerLetter)
{
this.managerLetter = managerLetter;
}
public HtmlSelectBooleanCheckbox getManagerLetter()
{
return managerLetter;
}
private HtmlOutputLabel managerLetterText;
public void setManagerLetterText(HtmlOutputLabel managerLetterText)
{
this.managerLetterText = managerLetterText;
}
public HtmlOutputLabel getManagerLetterText()
{
return managerLetterText;
}
コンポーネント・インスタンスがプロパティにバインドされているため、メソッドでコンポーネント・インスタンスにアクセスして、コンポーネントのプロパティの値を変更できます。たとえば、デフォルトで、チェックボックスとそのラベルのrendered
属性がtrue
に設定されているとします。従業員が管理者でない場合にこれらを非表示にするように属性をfalse
に設定するには、前述のsubmit
メソッドで次の処理を実行します。
employee
Beanのmanager
属性をチェックして確認します。
false
に設定します。
コードは、次のようになります。
public String submit() {
...
if(!employee.manager && managerLetter.isRendered())
{
managerLetter.setRendered(false);
managerLetterText.setRendered(false);
}
...
マネージドBeanおよびバッキングBeanの開発
タグ属性のバインドとコンポーネント・インスタンスのバインドの比較
値バインディングについて
プロパティへのコンポーネントの値バインド
プロパティへのコンポーネント・インスタンスのバインド
マネージドBeanについて
Copyright © 1997, 2006, Oracle. All rights reserved.