这是一个简单的想法来解决,但我从来没有做过,需要一个建议。我使用Spring, Spring Webflow和JSF与Primefaces。
我使用外部web服务来获取表中的一些数据。有时它的工作速度比网站呼叫慢,我想避免"等待"加载。我的想法(这不是什么新鲜事)是用所有静态(或本地服务器)内容加载页面,然后调用外部web服务来获取数据。完成后再显示
现在看起来是这样的:
网站:
<p:dataTable id="table" var="item" value="#{lastfm.topArtists}">
<p:column headerText="Model" sortBy="#{item.name}">
<h:outputText value="#{item.name}" />
</p:column>
</p:dataTable>
和Bean本身它只是:
private List<Artist> topArtists = new ArrayList<Artist>();
public void init(String u) {
topArtists = (List<Artist>) User.getTopArtists(u, StaticContent.api_key);
}
User -是Webservice API。
ATM init加载网站的on-render
,但我想避免它,在页面加载后以某种方式调用它,并在成功时显示。
我假设它可能是一些javascript函数与jquery,使用onDocumentReady()
和onSuccess
为ajax,但我真的不知道如何连接它。
谢谢!
质数面轮询组件可以帮助您实现这一点。
http://www.primefaces.org/showcase-labs/ui/poll.jsf<h:form id="form">
<p:poll interval="3"
listener="#{lastfm.topArtistsRetrieved}" update="table" />
<p:dataTable id="table" var="item" value="#{lastfm.topArtists}">
<p:column headerText="Model" sortBy="#{item.name}">
<h:outputText value="#{item.name}" />
</p:column>
</p:dataTable>
</h:form>
我假设User。检查完毕后,医生会通知你。基本上,您需要一个标志来指示您的进程是否结束。通过prime faces轮询,您应该检查标志是否升起,并通过ajax更新,您应该在准备好时打印结果。您甚至可以通过此流显示流程的进度。