在XPages中加载指示器页面完全刷新
我的一个XPage有很多设计元素。根据连接速度,页面加载的时间超过预期。我想创建一个指示器来显示登录用户“页面正在加载”。。。我做了部分刷新,效果很好,但我不能完全刷新。我一直在寻找解决办法。 我可以试试jquery、dojo或ajax 任何建议都很重要。 当做在XPages中加载指示器页面完全刷新,xpages,loading,Xpages,Loading,我的一个XPage有很多设计元素。根据连接速度,页面加载的时间超过预期。我想创建一个指示器来显示登录用户“页面正在加载”。。。我做了部分刷新,效果很好,但我不能完全刷新。我一直在寻找解决办法。 我可以试试jquery、dojo或ajax 任何建议都很重要。 当做 C.A.您是如何做到这一点的将不取决于XPages。理解事件的顺序很重要 用户单击某个地方的链接以打开页面 浏览器向服务器发送请求 服务器接收请求并加载页面服务器端的组件树 服务器在PageLoad之前、PageLoad之后、Prefo
C.A.您是如何做到这一点的将不取决于XPages。理解事件的顺序很重要
如果用户来自外部,唯一的选择是首先将他们发送到重定向网页,呈现该网页,然后以编程方式继续运行步骤1。如何执行此操作将不取决于XPages。理解事件的顺序很重要
如果用户来自外部,唯一的选择是首先将他们发送到重定向网页,呈现该网页,然后以编程方式继续运行步骤1。我还没有为其制作专门的说明9,但我在本TLCC网络研讨会中演示了一种技术。
相关部分从26分钟开始 我是在加载页面的首字母时这样做的,但我相信如果您已经在页面上,我可以调整它以进行完全刷新 基本概念是在页面加载时,实际上不加载任何长时间运行的数据。您只需发送页面的shell,然后在onClientLoad事件中触发部分刷新
第1页
- 标题UI显示在这里。。。。
-
这是一个演示页面。要查看的内容是添加的dojo资源,事实上,我从隐藏“MainContent”变量开始,然后是结束onClientLoad位
因此页面会加载,但生成repeat控件的数据不会运行,因为它位于未呈现的面板中。因此,用户可以立即访问该页面。然后onClientLoad启动,它显示一个“请等待”类型的东西,然后运行函数获取数据。
数据完成后,我设置scopedVariable以显示mainContent区域,然后触发endAjaxLoading内容,然后显示所有内容。我还没有为其制作专门的说明,但我在本TLCC网络研讨会上演示了一项技术。
相关部分从26分钟开始 我是在加载页面的首字母时这样做的,但我相信如果您已经在页面上,我可以调整它以进行完全刷新 基本概念是在页面加载时,实际上不加载任何长时间运行的数据。您只需发送页面的shell,然后在onClientLoad事件中触发部分刷新
第1页
- 标题UI显示在这里。。。。
-
这是一个演示页面。要查看的内容是添加的dojo资源,事实上,我从隐藏“MainContent”变量开始,然后是结束onClientLoad位
因此页面会加载,但生成repeat控件的数据不会运行,因为它位于未呈现的面板中。因此,用户可以立即访问该页面。然后onClientLoad启动,它显示一个“请等待”类型的东西,然后运行函数获取数据。
当数据完成时,我设置了一个scopedVariable,然后显示mainContent区域,然后触发endAjaxLoading内容,然后显示所有内容。我认为这不是特定于XPages的。你试过什么?这可能有助于你开始:在我开始之前,我正试图理解其中的逻辑。我现在制作了一集笔记,我相信它直接回答了这个问题。你可以在这里找到:我不认为这是特定于XPages的。你试过什么?这可能有助于你开始:在我开始之前,我正试图理解其中的逻辑。我现在制作了一集笔记,我相信它直接回答了这个问题。你可以在这里找到它:一个g
<xp:this.resources>
<xp:script src="/xpUtilities.jss" clientSide="false"></xp:script>
<xp:dojoModule name="extlib.dijit.ExtLib"></xp:dojoModule>
<xp:dojoModule name="extlib.dijit.Loading"></xp:dojoModule>
<xp:styleSheet href="/app.css"></xp:styleSheet>
</xp:this.resources>
Page 1
<xp:this.beforePageLoad><![CDATA[#{javascript:viewScope.put("vsHasData", false);}]]></xp:this.beforePageLoad>
  -  Header UI goes here....<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:panel id="MainContentWrapper">
<xp:panel id="MainContent">
<xp:this.rendered><![CDATA[#{javascript:return viewScope.get("vsHasData");}]]></xp:this.rendered>
<xp:br></xp:br>
<xp:repeat id="repeat1" rows="100" var="rowData"
indexVar="rowIdx">
<xp:this.value><![CDATA[#{javascript:viewScope.get("vsStateMap").keySet()}]]></xp:this.value>
<xp:text escape="true" id="computedField2"
value="#{rowData}">
</xp:text>
-
<xp:text escape="true" id="computedField3">
<xp:this.value><![CDATA[#{javascript:viewScope.get("vsStateMap").get(rowData)}]]></xp:this.value>
<xp:this.converter>
<xp:convertNumber type="number"
integerOnly="true">
</xp:convertNumber>
</xp:this.converter>
</xp:text>
<xp:br></xp:br>
</xp:repeat>
<xp:br></xp:br>
<xp:br></xp:br>
</xp:panel>
</xp:panel>
<xp:eventHandler event="onClientLoad" submit="true" refreshMode="partial" refreshId="MainContentWrapper">
<xp:this.action><![CDATA[#{javascript:return getStateTotals();}]]></xp:this.action>
<xp:this.onStart><![CDATA[XSP.startAjaxLoading("Calculating State Totals. This may take a few moments.")]]></xp:this.onStart>
<xp:this.onComplete><![CDATA[XSP.endAjaxLoading()]]></xp:this.onComplete>
<xp:this.onError><![CDATA[XSP.endAjaxLoading()]]></xp:this.onError>
</xp:eventHandler>