【发布时间】:2015-03-26 12:02:31
【问题描述】:
我问过这个问题,但没有得到任何帮助。
假设我的xhtml中有这部分代码
<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>
我的支持 bean 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);
}
}
在我的 bean 中,我数到 10,我喜欢模拟每个仪器之间等待 2 秒的时间,但在我的 xhtml 中,我没有立即看到响应,只有当方法完成时。在我的浏览器控制台中,我可以看到所有 my_check 日志,但仅在经过 20 秒时。
我想要的是每 2 秒后显示 num,即 loop() 方法中的每个增量。
此代码只是即兴创作。我真正想做的是将百分比附加到我的加载微调器。
我尝试了不同的解决方案,但没有一个适合我。请在这方面与我分享您的意见和经验。
提前致谢
【问题讨论】: