richfaces отправка данных на сервер с помощью ajax - PullRequest
4 голосов
/ 17 июня 2011

Мое приложение позволяет пользователю вводить текст в поле сообщения, а когда он печатает, во время htat оно должно позволить администратору видеть, что набирается в другой консоли.

за это Мне нужно периодически отправлять данные в управляемый компонент и оттуда в бизнес-уровень.

      <h:form>
          Name : <h:inputText id="name" value="#{clockBean.name}"/>
          Message: <h:inputText id="age" value="#{clockBean.msg}"/>
          <a4j:poll id="poll" interval="20000" enabled="#{clockBean.enabled}" action="#
           {clockBean.process}" render="clock,counter"/>
          <a4j:log/>        
      </h:form>

У меня есть свойства managedBean для имени и сообщения, и мне нужно получить доступ к свойствам имени и сообщения и отправить их на бизнес-уровень при обработке в Метод process () управляемого Bean-компонента clockBean.

@ManagedBean 
@ViewScoped 

public class ClockBean implements Serializable{ 

private string msg; 
private string name; 
private boolean enabled; 

public void process(){ 

System.out.println("timer event calling *** - msg is "+msg+" : name is "+name); } 

//getters setters & rest of the code

в настоящее время у меня есть область действия bean-компонента в виде ViewScoped, и я получаю нулевые значения для 2 полей, когда опрос выполняется каждые 20 секунд. Как я могу получить значения свойств name и msg, когда опрос выполняется за определенный промежуток времени? Есть ли лучший подход к решению этой проблемы?

Ответы [ 2 ]

4 голосов
/ 20 июня 2011

Область сеанса видна только текущему пользователю. Таким образом, если вы попытаетесь получить #{clockBean} на странице администратора, вы фактически получите совершенно новый компонент. Чтобы сделать эту информацию доступной и администратору, вам необходимо сохранить эту информацию и прочитать ее.

Обновление: Я бы не стал делать это с опросом, так как опрос выполняет запрос каждый раз, даже если данные не меняются. Я бы сделал это с событиями onchange, очередью и задержкой запроса. Если a4j:poll не отправляет форму (возможно, ошибка в richfaces?), Вы можете легко реализовать это с помощью a4j:function и просто создать функцию js и вызвать ее с помощью setInterval() из js.

2 голосов
/ 13 мая 2012

получил ответ на мою проблему .. Я не добавил свойство

 execute="@form" 

к моему тегу опроса .. поэтому значения, относящиеся к полям ввода, не попадали в запрос должным образом ..Весь вклад был высоко оценен.

...