Я спросил об этой проблеме, но я не получил никакой помощи. Пусть говорят, у меня есть эта часть кода в моем 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()
.
Этот код является только импровизацией. То, что я действительно хочу сделать, это приложить проценты к моей загрузчике.
Я пробовал разные решения, но никто не мог работать для меня. Пожалуйста, поделитесь с вами своими мнениями и опытом.
Заранее благодарен