2011-01-10 7 views
0

JavaScript変数をtrueまたはfalseに設定するAjax呼び出しの後にレンダリングするRichFacesコンポーネントがあります。Seam/RichFaces:JavaScript関数または変数の結果に基づくレンダリング

変数がfalseの場合、パネルをレンダリングしたくありません。この変数(またはJS関数呼び出し)の結果をコンポーネントのレンダリングされた属性に入力する方法はありますか?

答えて

2

Richfacesは、サーバー側でコンポーネントをレンダリングします。したがって、サーバー側に パラメーターを渡す必要があります。これを達成するにはいくつかの方法があります。 ページに非表示の入力を作成し、それをBeanのフラグにリンクします。何かのように、ページで

class YourBean { 

     private boolean visible = false; 

     //getter,setter 

} 

<h:selectBooleanCheckbox id="hiddeninput" style="visibility:hidden" 
    value="#{yourBean.visible}"/> 
<rich:component id="compid" rendered="#{yourBean.visible}" /> 

<a:commandButton onclick="document.getElementById('hiddeninput').checked=true" 
    reRender="compid"/> 

かは、真または偽にフラグを設定する2つのメソッドを作成します。ページで

class YourBean { 

     private boolean visible = false; 

     public void makeInvisible() { 
      visible = false; 
     } 

     public void makeVisible() { 
      visible = true; 
     } 

} 

<rich:component id="compid" rendered="#{yourBean.visible}" /> 

<a:commandButton action="#{yourBean.makeInvisible()}" reRender="compid"/> 
0

RichFacesの再レンダリングは、EL式とることができます。

reRender="#{bean.componentsToUpdate}" 

ので、別のオプションは、あなたが(入力に基づいて)実行時に決定することができますするかどうかを特定のコンポーネントをレンダリングします。

1

オプション1: JavaScript/jQueryを使用して、ajaxリクエストのoncomplete属性から表示/非表示を切り替えることができます。

オプション2(より良い):バックエンドアクションのメソッドでブール値のプロパティ値を変更し、その値をレンダリング属性で使用します。

関連する問題