簡體   English   中英

XPages:丟失viewScoped bean(再次)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM