也许这个标题并不是很精确,但问题是。我正在做一些JSF项目,我需要以下内容:
当用户登录到我的应用程序(即。当他导航到主页时,需要调用一个从互联网和/或数据库获取一些货币汇率的方法。该方法的执行(页面解析、数据保存等)持续大约5-6秒。我不希望从登录到主页的导航持续5-6秒,我想要其中的一个(还没有决定哪一个)发生:
1)当用户登录时,他看到主页(立即,而不是在5-6秒之后),并且能够在方法在后台工作时单击和/或导航。
2)当用户登录时,他会看到主页(立即)、页面一部分中的一些加载标志,在方法执行之后,他会看到dataTable的汇率。
问题是,怎么做这个?如果我将该方法放入HomePageBean构造函数中,则在执行方法之前不会显示页面。也许我可以在主页上添加一些不可见的元素,并在某个Getter中调用该方法,但我不知道这是否是正确的方法(似乎是黑客),还是它真的会起作用。
我正在使用JSF2.0和Primefaces。提前感谢
发布于 2011-01-11 01:03:36
在下面的示例中使用ApplicationScoped bean:
@ManagedBean(name = "exchRateBean", eager = true)
@ApplicationScoped
public class ExchRateBean {
public List<Rate> getRates(Date date) {
// cached data or DAO methods here
}
@PostConstruct
public void init() {
// Initial web-app initialization, will run once upon deploy
}
}下面是访问应用程序作用域bean的后台bean。
@RequestScoped
public class MyBean {
@ManagedProperty(value="#{exchRateBean}")
private ExchRateBean exchRateBean;
// your JSF methods
public List<Rate> getRates(Date date) {
return getExchRateBean().getRates(date);
}
// G&S
public ExchRateBean getExchRateBean() {
return exchRateBean;
}
public void setExchRateBean(ExchRateBean exchRateBean) {
this.exchRateBean = exchRateBean;
}
}https://stackoverflow.com/questions/4653131
复制相似问题