我有服务器端倒计时计数器。当== 0时,方法应该执行ExternalContext#dispatch()
,但它没有执行。方法ExternalContext#redirect()
在此位置正常工作。
....
}else{
try {
FacesContext.getCurrentInstance().getExternalContext().dispatch("result.xhtml");
} catch (IOException e) {
e.printStackTrace();
}
}
....
我尝试了几种拼写url的方法(result,result.xhtml,result.xhtml
等),结果相同。
这不是让JSF导航到不同视图的正确方法。
如果你在一个动作方法中,你应该把它作为字符串返回。
public String submit() {
// ...
return "result.xhtml";
}
或者如果你不在一个动作方法中,并且由于某些不清楚的原因不能将其更改为一个完整的动作方法,那么使用NavigationHandler#handleNavigation()
代替。
FacesContext context = FacesContext.getCurrentInstance();
context.getApplication().getNavigationHandler().handleNavigation(context, null, "result.xhtml");