在 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 类的先前状态会丢失。情况似乎并非如此。
我不知道持久性特征和限制——甚至不知道了解它们是否重要。其他人可以对此有所了解吗?