2015-03-26 2 views
0

Я спросил об этой проблеме, но я не получил никакой помощи. Пусть говорят, у меня есть эта часть кода в моем xhtmlОбновление JSF ajax

<h:form id="viewSnForm" prependId="false"> 

       <h:commandButton id="kopce" value="kopce"> 
        <f:ajax event="click" render="panelTarget" execute="kopce" listener="#{myBean.loop()}"></f:ajax> 
       </h:commandButton> 
       <h:panelGroup id="panelTarget"> 
        <h:outputText id="target" value="#{myBean.num}"/> 
       </h:panelGroup> 

      </h:form> 

и мой бэк-боба myBean.java выглядит как этот

public void runMyScript(){ 
    JavaScriptRunner.runScript(FacesContext.getCurrentInstance(), 
      "console.log('my_check'); document.getElementById('target').innerHTML = " + this.num + ";"); 
} 

public void loop(){ 

    for (int i = 0; i < 10; i++) { 
     this.num += 1; 

     runMyScript(); 
     try { 
      Thread.sleep(2000); 
     } catch (InterruptedException ex) { 
      Logger.getLogger(MyCompanyBean.class.getName()).log(Level.SEVERE, null, ex); 
     } 

    } 

в моем компоненте я считаю до 10, и я хотел бы имитировать, что йота 2 секунды ожидания среди каждого инструментария, но в моем xhtml я не вижу ответ сразу, только когда метод заканчивается. В консоли моего браузера я вижу все журналы my_check, но только когда прошло 20 секунд. Я хочу отображать num через каждые 2 секунды, то есть каждое приращение в методе loop().

Этот код является только импровизацией. То, что я действительно хочу сделать, это приложить проценты к моей загрузчике.

Я пробовал разные решения, но никто не мог работать для меня. Пожалуйста, поделитесь с вами своими мнениями и опытом.

Заранее благодарен

ответ

0

Ожидаемое поведение. Поскольку в обычных вызовах метода сервер отправляет данные обратно клиенту, когда метод заканчивается. Два возможного решения:

  • Использования на сторону клиента опрос
  • Использования сервера Нажмите

И с каким-то очень простым использованием Google, я нашел this icefaces component, который поддерживает оба (и я даже не ICEfaces пользователь)

Смежные вопросы