[英]XPages: losing a viewScoped bean (again)
我們的頁面上有一些手風琴。 有些手風琴開始時是空的,當用戶通過部分更新單擊“手風琴”欄時,它們會被填充。 剛開始時,這很好,但是如果用戶在以后打開手風琴將無法使用。
當用戶關閉手風琴,切換到同一nsf中的不同頁面,在那里做很多事情,然后返回第一頁時,就會發生這種情況。 不知何故,不執行與部分刷新有關的代碼。
這是一些代碼:
<xe:djAccordionPane id="djAccordionPane3">
<xp:div id="outerPanelModels">
<xc:ccModelView>
<xc:this.rendered><![CDATA[#{javascript:UserData.getVar("ShowModels")}]]></xc:this.rendered>
</xc:ccModelView>
</xp:div>
<xe:this.dojoAttributes>
<xp:dojoAttribute name="Title" value="#{javascript:constants.Models}"></xp:dojoAttribute>
</xe:this.dojoAttributes>
<xp:eventHandler event="onShow" submit="true" refreshMode="partial"
refreshId="outerPanelModels">
<xp:this.onComplete><![CDATA[hideAjaxLoader();]]></xp:this.onComplete>
<xe:this.script><![CDATA[if(document.getElementById("#{id:outerPanelModels}").childElementCount==0) {
showAjaxLoader();
return true
}
return false;]]></xe:this.script>
<xe:this.action><![CDATA[#{javascript:UserData.putVar("ShowModels", true)}]]></xe:this.action>
</xp:eventHandler>
</xe:djAccordionPane>
UserData是sessionScope bean。 putVar和getVar曾經在viewScope bean中,我懷疑bean被破壞了(實際上是),所以我將代碼移到了sessionScope中。
為什么不執行底部的代碼行,即帶有UserData.putVar(“ ShowModels”,true)的行? 有什么線索嗎? 解決方案也許??
謝謝!
更新應用程序設置為將所有頁面保留在內存中。
xsp.properties:
xsp.error.page=xError.xsp
xsp.library.depends=com.ibm.xsp.extlib.library
xsp.min.version=8.5.3
xsp.persistence.mode=basic
xsp.resources.aggregate=false
xsp.theme.web=extendOneUI.theme
xsp.openlog.expireDate=15
xsp.error.page=Error.xsp
xsp.persistence.viewstate=fullstate
# org.openntf.domino.xsp=godmode,marcel,bubbleExceptions
xsp.application.forcefullrefresh=true
xsp.error.page.default=true
xsp.session.timeout=180
xsp.application.timeout=180
查看xsp.properties,尤其是Persistence Properties,以了解要保留在內存和磁盤上的頁面數。 也有默認設置。
一旦存儲了一定數量的組件樹,如果嘗試存儲另一個組件樹,則最早的組件樹將被轉儲。 在您描述的場景中,聽起來好像是在使用手風琴容器轉儲頁面的組件樹,這也將轉儲UserData viewScoped變量。
沒有萬能的答案,這取決於您的應用程序以及用戶與之交互的方式。 這還取決於您是否將所有頁面保留在內存中,全部保留在磁盤上還是混合使用。 基本上,如果您允許用戶在瀏覽器中為同一NSF打開其他選項卡,除非您可以保持該頁面的組件樹可用,否則存在組件樹丟失的風險,因為服務器端無法知道它的存在。仍在瀏覽器中打開。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.