我有一个复选框组,其值是使用另一个复选框组的选定值计算的。所以当我做的时候
var check6:com.ibm.xsp.component.xp.XspSelectManyCheckbox = getComponent("check6");
ArrSelected = check6.getSelectedValues();
要获取所选值,会发生以下异常:
Error calling method 'getSelectedValues()' on java class 'com.ibm.xsp.component.xp.XspSelectManyCheckbox'
java.util.ArrayList incompatible with [Ljava.lang.Object;
Check6从在beforePageLoad事件上计算的会话范围变量中获取其值,并且我还设置了默认值。
请注意,这不会发生在页面的onload上,而是在第一次部分刷新时发生。有谁知道这个异常表明了什么?
非常感谢!
答案 0 :(得分:1)
将第二个复选框组的selectItems的值绑定到与第一个复选框组的value属性绑定的表达式完全相同的表达式。
This article提供了原因的冗长描述,但这里有一个非常简单的摘要:如果你问一个组件它的值是什么,它必须询问它所绑定的数据。因此,跳过组件,自己询问数据。
所以,如果你的第一组看起来像这样:
<xp:checkBoxGroup value="#{currentDocument.FirstField}">...
然后你的第二组应该是这样的:
<xp:checkBoxGroup value="#{currentDocument.SecondField}">
<xp:selectItems value="#{currentDocument.FirstField}">
</xp:checkBoxGroup>
当用户在第一组中的选择发布到数据源时,第二组将反映更改,因为它们链接到该数据源上的同一属性。稍微警告:如果您的页面包含任何必填字段,您可能需要跳过触发第二组重新计算的onchange
事件的验证。
答案 1 :(得分:-1)
原因很简单,这个类没有方法getSelectedValues()(据我所见,请查看此处了解更多信息:http://public.dhe.ibm.com/software/dw/lotus/Domino-Designer/JavaDocs/XPagesExtAPI/8.5.2/index.html?overview-summary.html)
也许您可以将控件绑定到范围变量,然后访问此变量以计算其他值?