我正在使用primefaces 5.0开发jsf,如果在后备bean中满足条件,我需要将用户重定向到另一个页面。因此,我习惯于p:poll让页面每秒检查一次条件,如果满足条件,则将用户重定向到另一个页面。
我创建了一个小项目来尝试这种情况,该项目使用poll来检查是否int cnt大于等于10,如果是,则将用户重定向到welcomePrimefaces.xhtml。另外,还有另一个线程T1用于简单地增加线程数,cnt以便该条件可以满足一段时间。
这是我做的事情:
页面:(没什么特别的,只需每秒轮询一次即可查看状态)
<h:form>
Hello from Facelets
<br />
<p:poll interval="1" listener="#{mainBean.checkStatus()}"/>
</h:form>
Run Code Online (Sandbox Code Playgroud)
后备豆:
public class MainBean {
private Integer cnt = 0;
@PostConstruct
public void init() {
Thread t1 = new Thread(new T1(), "test");
t1.start();
}
public void checkStatus() {
synchronized (cnt) {
System.out.println("cnt:" + cnt);
if (cnt >= 10) {
try {
Object request = FacesContext.getCurrentInstance().getExternalContext().getRequest();
Object response = FacesContext.getCurrentInstance().getExternalContext().getResponse();
HttpServletRequest httpRequest = (HttpServletRequest) …Run Code Online (Sandbox Code Playgroud)