下面是一个简单的 Xpage,其中包含一个绑定到 sessionScope 变量的单选按钮组。单选按钮组的 onclick 事件设置计算域。有一个 afterPageLoad 事件来初始化会话范围变量。
一切都很好。但是,如果我清除会话范围变量(使用调试自定义控件),则 onclick 事件永远不会触发。用户可以随意单击单选按钮,并且计算域永远不会改变,直到按 F5 重新加载页面。以下是我的页面来源。关于如何触发 onclick 事件的任何建议?如果用户让会话变量超时然后开始单击单选按钮,这将是一个很大的可用性问题。
霍华德
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.afterPageLoad><![CDATA[#{javascript:print("starting the afterPageLoad event");
if (sessionScope.init != true|| sessionScope.radioData == null){
//setup default values'
print("initing the value");
sessionScope.init = true;
sessionScope.radioData = "Red";
}
}]]></xp:this.afterPageLoad>
<xp:radioGroup id="radioButtons" value="#{sessionScope.radioData}">
<xp:selectItem itemLabel="Red"></xp:selectItem>
<xp:selectItem itemLabel="Green"></xp:selectItem>
<xp:selectItem itemLabel="Blue"></xp:selectItem>
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="computedField1">
<xp:this.action><![CDATA[#{javascript:print("starting onclick event");
if (sessionScope.init != true){
print("reload the page");
context.reloadPage();
}
var radioval = getComponent("radioButtons").getValue();
getComponent("computedField1").setValue(radioval); }]]></xp:this.action>
</xp:eventHandler></xp:radioGroup>
<xp:text escape="true" id="computedField1"></xp:text></xp:view>