1
在XPages中使用Java設計元素時遇到問題。在Xpages中使用靜態方法Java元素
考慮以下簡單的XPage:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:button value="Go" id="button1"></xp:button>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:text escape="true" id="computedField1">
<xp:this.value><![CDATA[#{javascript:importPackage(PACKAGE_NAME_REDACTED);
TESTStatic.getValue();}]]></xp:this.value>
</xp:text>
</xp:view>
它所做的就是把一個簡單的XPage帶有一個按鈕和一個計算字段。計算字段的值是調用靜態方法的結果。
Java的設計元素代碼:
package PACKAGE_NAME_REDACTED;
public class TESTStatic {
public static String value;
static {
System.out.println("Running static initialiser");
value = "fred";
}
public static String getValue() {
return value;
}
}
我無法理解的事情是這樣的。當Xpage被調用時,靜態初始化器會運行,您可以在服務器控制檯日誌中看到結果。但是,如果頁面再次運行,則靜態初始化程序不會再次運行,至少指示該類的狀態已持久 - 這由計算字段的值保持相同來承擔。看來,如果我離開它一段時間,Java類的狀態似乎被清除,並且靜態初始化器再次運行。
所以,我假設這個類一旦加載,就會持續到一定程度。但是我們再次重新運行Xpage,所以我期望Java類的前一個狀態會丟失。這似乎並非如此。
我不知道持續特性和限制 - 甚至不知道它們是否重要。任何人都可以解釋這一點嗎?