XPage에서 사용할 때 Java 디자인 요소에 문제가 있습니다. 그것은이하는 모든 버튼과 계산 필드 간단한 XPage를 넣어Xpages Java 요소에서 정적 메서드 사용
<?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를 생각해 보자. 계산 된 필드의 값은 정적 메서드 호출의 결과입니다.
자바 디자인 요소 코드는 다음과 같습니다
이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 클래스의 이전 상태가 손실 될 것으로 예상됩니다. 이것은 사실이 아닌 것 같습니다.
필자는 퍼시스턴스 특성 및 한계를 알지 못합니다. 다른 사람이 이것에 대해 어떤 생각을 밝힐 수 있습니까?