投票完成后,primefaces重置页面

时间:2018-11-12 10:53:56

标签: jsf primefaces polling

我的xhtml网站中的代码段:

<div>
    <p:photoCam id="webcam" widgetVar="webcam" listener="#{webcam.capture}" update="response" oncomplete="PF('poll').start()"></p:photoCam>

    <p:poll id="capture" intervall="1" oncomplete="PF('webcam').capture()" stop="#{timeController.stamped}"></p:poll>               

    <p:outputLabel styleClass="#{timeController.stamped ? 'colouredGreen' : 'colouredRed'}" id="response">
        <p:spacer width="50" height="50"></p:spacer>
    </p:outputLabel>

    <p:poll intervall="3" widgetVar="poll" autoStart="false" oncomplete="PF('triggerReset').click()"></p:poll>

    <p:commandButton id="triggerReset"  widgetVar="triggerReset" style="display:none" actionListener="#{rimeController.resetStamp}" ajax="false"></p:commandButton> 
</div>

我想做的是以下事情:
1.自动扫描条形码(网络摄像头每秒检查其前面是否有条形码)
2.如果扫描了条形码>>>我的标签变成绿色(作为扫描条形码的人的反馈),然后停止检查条形码
3. 3秒钟后(不必担心时间跨度),重设标签(默认状态>>>红色)并再次开始扫描,或者重设后备豆中的stamp-Var并重新加载整个页面(首选第一个替代方法)。

问题: 我无法让Point 3正常工作。条形码被扫描,标签变成绿色;网络摄像头停止扫描,但未发生重置。因此,据我所知,基本上第二次民意调查并未开始。

我的问题:
我在做什么错了?
我可以将其与我采用的方法配合使用吗?
如果没有,我如何实现这样的目标?

方法2(无效):

<p:poll intervall="3" widgetVar="poll" autoStart="false" oncomplete="triggerReset()"></p:poll>

<p:remoteCommand name="triggerReset" ajax="false" action="#{timeController.resetStamp}"></p:remoteCommand>

WebcamBean:

@ManagedBean(name="webcam", eager=true)
@SessionScoped
public class WebcamController{
    @ManagedProperty(value="#{timeController}")
    TimeController timeController = null;
    public synchronized void capture (CaptureEvent captureEvent){
        timeController.registerArrival("1001");
    }
    public TimeController getTimeController(){return timeController;}
    public void setTimeController(TimeController timeController){this.timeController=timeController;}
}

timeController:

@ManagedBean(name="timeController", eager=true)
@SessionScoped
public class TimeController{
    boolean stamped = false;
    public void registerArrival() {
        //parameterList getting filled and data written into database, works fine
    }
    resetStamp() {
        stamped = false;
    }
    public boolean isStamped(){return stamped;}
    public void setStamped(boolean stamped){this.stamped=stamped;}
}

+ commandButton方法的多次迭代

在此先感谢您的帮助:)

0 个答案:

没有答案