Seam / RichFaces: рендеринг на основе результата функции или переменной JavaScript - PullRequest
0 голосов
/ 10 января 2011

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

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

Ответы [ 3 ]

2 голосов
/ 10 января 2011

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

Или создайте два метода, которые устанавливают флаг в true или false.

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"/>
1 голос
/ 31 января 2011

Вариант 1: Вы можете показать / скрыть, используя JavaScript / jQuery из атрибута oncomplete в запросе ajax.

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

0 голосов
/ 11 января 2011

RichFaces reRender может принимать выражение EL:

reRender="#{bean.componentsToUpdate}"

Итак, еще один вариант, вы можете решить во время выполнения (на основе ввода), следует ли отображать определенный компонент.

...