[英]JSF ajax update
我问了这个问题,但没有得到任何帮助。 假设我在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>
我的后备豆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
,仅当方法完成时,我不会立即看到响应。 在浏览器的控制台中,我只能看到20秒后才能看到所有my_check
日志。 我想要的是每2秒显示num
,即loop()
方法中的每个增量。
此代码只是即兴创作。 我真正想做的是将百分比附加到加载微调器上。
我尝试了不同的解决方案,但没有一个适合我。 请就此与我分享您的意见和经验。
提前致谢
这是预期的行为。 由于在常规方法调用中,服务器仅在方法完成后才将数据发送回客户端。 两种可能的解决方案:
通过一些非常简单的google用法,我发现了同时支持这两个功能的icefaces组件 (我什至都不是IceFaces用户)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.