在页面呈现后用Ajax向Datatable获取数据



这是一个简单的想法来解决,但我从来没有做过,需要一个建议。我使用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更新,您应该在准备好时打印结果。您甚至可以通过此流显示流程的进度。

相关内容

  • 没有找到相关文章

最新更新