2011-01-10 10 views

Antwort

2

Richfaces stellt Komponenten auf der Serverseite dar. Sie müssen also Ihren Parameter an die Serverseite übergeben. Es gibt einige Möglichkeiten, dies zu erreichen. Erstellen Sie eine versteckte Eingabe auf der Seite und verknüpfen Sie sie mit einem Flag in Ihrer Bean. So etwas wie,

class YourBean { 

     private boolean visible = false; 

     //getter,setter 

} 

auf der Seite,

<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"/> 

Oder erstellen Sie zwei Methoden, den Flag auf wahr oder falsch setzt.

class YourBean { 

     private boolean visible = false; 

     public void makeInvisible() { 
      visible = false; 
     } 

     public void makeVisible() { 
      visible = true; 
     } 

} 

auf der Seite,

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

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

Richfaces rerender kann ein EL-Ausdruck nehmen:

reRender="#{bean.componentsToUpdate}" 

Also, eine weitere Option, die Sie in Runtime (basierend auf einer Eingabe) entscheiden kann, ob auf Rendern Sie eine bestimmte Komponente.

1

Option 1: Sie können mit JavaScript/jQuery aus oncomplete-Attribut auf Ajax-Anfrage anzeigen/ausblenden.

Option 2 (besser): Sie ändern einen booleschen Eigenschaftswert in der Methode der Backend-Aktion und verwenden ihren Wert im gerenderten Attribut.