2011-01-10 2 views
0

У меня есть компонент RichFaces, который я хочу отобразить после вызова Ajax, который устанавливает переменную JavaScript как true, так и false.Seam/RichFaces: рендеринг на основе результата функции или переменной JavaScript

Когда переменная ложна, я не хочу, чтобы панель отображалась. Есть ли способ ввести результат этой переменной (или любой вызов функции JS) в атрибут render компонента?

ответ

2

Richfaces отображает компоненты на стороне сервера. Таким образом, вы должны передать свой параметр на сервер. Есть несколько способов добиться этого. Создайте скрытый ввод на странице и соедините его с флагом в вашем компоненте. Нечто подобное,

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

Или создать два метода, которые наборы флаг истинным или ложным.

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 из атрибута oncomplete по запросу ajax.

Вариант 2 (лучше): вы изменяете значение свойства boolean в методе backend action и используете его значение в атрибуте rendered.