java.util.ArrayList与[Ljava.lang.Object复选框组不兼容

时间:2013-04-17 08:01:47

标签: xpages checkbox xpages-ssjs

我有一个复选框组,其值是使用另一个复选框组的选定值计算的。所以当我做的时候

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上,而是在第一次部分刷新时发生。有谁知道这个异常表明了什么?

非常感谢!

2 个答案:

答案 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

也许您可以将控件绑定到范围变量,然后访问此变量以计算其他值?