primefaces 轮询动态间隔
primefaces poll dynamic interval
我写了这样的示例代码:
@ViewScoped
@Named
public class SampleBean implements Serializable {
private int interval = 1;
public void execute() {
switch (interval) {
case 1:
System.out.println("1 Executed ...");
break;
case 2:
System.out.println("2 Executed ...");
break;
case 3:
System.out.println("3 Executed ...");
break;
}
}
public int getInterval() {
return interval;
}
public void setInterval(int interval) {
this.interval = interval;
}
}
和这个 xhtml:
<h:form>
<p:selectOneButton value="#{sampleBean.interval}">
<f:selectItem itemLabel="1" itemValue="1"/>
<f:selectItem itemLabel="2" itemValue="2"/>
<f:selectItem itemLabel="3" itemValue="3"/>
</p:selectOneButton>
<p:poll interval="#{sampleBean.interval}" listener="#{sampleBean.execute}" id="poll"/>
</h:form>
我想动态更新 primefaces 轮询组件的间隔时间,但我的示例代码没有改变。睡眠总是每 1 秒执行一次。
我的代码有什么问题?
您需要告诉 p:poll
组件重新获取它的支持 bean 值。您可以通过在组件上调用新的渲染阶段(通过 PrimeFaces update
或通过 f:ajax
render
)轻松完成此操作。
所以要让它工作,你只需要做这样的事情,
<h:form>
<p:selectOneButton value="#{sampleBean.interval}">
<f:selectItem itemLabel="1" itemValue="1"/>
<f:selectItem itemLabel="2" itemValue="2"/>
<f:selectItem itemLabel="3" itemValue="3"/>
<f:ajax render="@form"/>
</p:selectOneButton>
<p:poll interval="#{sampleBean.interval}" listener="#{sampleBean.execute}" id="poll"/>
</h:form>
注意上面的 f:ajax
调用。
您需要定位封闭(父)组件以使其刷新 - 这就是我们直接定位表单而不是轮询组件的原因。
我写了这样的示例代码:
@ViewScoped
@Named
public class SampleBean implements Serializable {
private int interval = 1;
public void execute() {
switch (interval) {
case 1:
System.out.println("1 Executed ...");
break;
case 2:
System.out.println("2 Executed ...");
break;
case 3:
System.out.println("3 Executed ...");
break;
}
}
public int getInterval() {
return interval;
}
public void setInterval(int interval) {
this.interval = interval;
}
}
和这个 xhtml:
<h:form>
<p:selectOneButton value="#{sampleBean.interval}">
<f:selectItem itemLabel="1" itemValue="1"/>
<f:selectItem itemLabel="2" itemValue="2"/>
<f:selectItem itemLabel="3" itemValue="3"/>
</p:selectOneButton>
<p:poll interval="#{sampleBean.interval}" listener="#{sampleBean.execute}" id="poll"/>
</h:form>
我想动态更新 primefaces 轮询组件的间隔时间,但我的示例代码没有改变。睡眠总是每 1 秒执行一次。
我的代码有什么问题?
您需要告诉 p:poll
组件重新获取它的支持 bean 值。您可以通过在组件上调用新的渲染阶段(通过 PrimeFaces update
或通过 f:ajax
render
)轻松完成此操作。
所以要让它工作,你只需要做这样的事情,
<h:form>
<p:selectOneButton value="#{sampleBean.interval}">
<f:selectItem itemLabel="1" itemValue="1"/>
<f:selectItem itemLabel="2" itemValue="2"/>
<f:selectItem itemLabel="3" itemValue="3"/>
<f:ajax render="@form"/>
</p:selectOneButton>
<p:poll interval="#{sampleBean.interval}" listener="#{sampleBean.execute}" id="poll"/>
</h:form>
注意上面的 f:ajax
调用。
您需要定位封闭(父)组件以使其刷新 - 这就是我们直接定位表单而不是轮询组件的原因。