我正在使用Java EE 7和Primefaces开展考试管理课程。测试是定时的,一旦时间结束,我想自动显示一个对话框(即没有用户点击任何按钮)。我在点击按钮时成功使用了Primefaces Dialog框架,但无法自动完成。
为了计时测试,我使用的是TimerService,它在超时时调用无状态EJB的方法。我有一个会话范围的CDI bean,它创建了计时器。
这是CDI bean的post构造方法。
public void init() {
studentAnswers = new ArrayList<StudentAnswer>();
examSections=ePaper.getSections();
examTimerBean.createExamPaperDuration(10,RequestContext.getCurrentInstance());
}
无状态EJB如下 -
@Stateless
public class ExamTimerBean {
@Resource TimerService timerService;
RequestContext reqCtx;
public void createExamPaperDuration(int duration,RequestContext reqCtx){
this.reqCtx=reqCtx;
timerService.createTimer(duration*1000, null);
}
@Timeout
public void examTimeExpired(){// throws IOException{
try{
reqCtx.openDialog("thanks");
}
catch(EJBException e){
System.out.println(e.getMessage());
}
}
}
我将请求上下文传递给EJB,但是对话框没有打开。请帮助。