Xpages getComponent(“fieldName”).setValue()不工作

Xpages getComponent(“fieldName”).setValue()不工作,xpages,lotus-notes,lotus-domino,xpages-ssjs,Xpages,Lotus Notes,Lotus Domino,Xpages Ssjs,场景:我对我的XPage应用程序有一个要求,比如,复选框组字段有3个选项。有3个不同的表,每个表包含10多个字段(与数据源绑定)。无论从复选框中选择了什么选项,都应显示相应的表(复选框组没有默认值,所有3个表都隐藏为初始值)。因为它是一个复选框,所以可以选中所有选项,如果未选中任何选项,则应隐藏相应的表,并清除表中这些字段中输入的值。这就是要求,它非常简单,只需要很少的时间就可以完成。但问题出现在这里 问题:在复选框的onClick()事件中,我编写了SSJS代码,以清除未选中选项的特定表中字段

场景:我对我的XPage应用程序有一个要求,比如,复选框组字段有3个选项。有3个不同的表,每个表包含10多个字段(与数据源绑定)。无论从复选框中选择了什么选项,都应显示相应的表(复选框组没有默认值,所有3个表都隐藏为初始值)。因为它是一个复选框,所以可以选中所有选项,如果未选中任何选项,则应隐藏相应的表,并清除表中这些字段中输入的值。这就是要求,它非常简单,只需要很少的时间就可以完成。但问题出现在这里

问题:在复选框的onClick()事件中,我编写了SSJS代码,以清除未选中选项的特定表中字段集的值。但这并没有发生

var ckbxValue = getComponent("checkBox").getValue();
if(!@Contains(ckbxValue,"1stOption"))
{
    array_1 = new Array("txtFld_1","txtFld_2","txtFld_3","txtFld_4","txtFld_5","txtFld_etc");
    for(d=0;d<array_1.length;d++)
    {
        //currentDocument.setValue(array_1[d],"");
        getComponent(array_1[d]).setValue("");
    }
}
var ckbxValue=getComponent(“复选框”).getValue();
如果(!@包含(ckbxValue,“1stOption”))
{
数组_1=新数组(“txtFld_1”、“txtFld_2”、“txtFld_3”、“txtFld_4”、“txtFld_5”、“txtFld_等”);

对于(d=0;d不要跟踪组件。最好的方法是将组件绑定到作用域变量并读取该变量。尤其是使用复选框,这样可以省去很多麻烦

将UI元素视为可视化元素,而不是数据。业务逻辑始终作用于数据,而不是其可视化表示


试一试。

不要跟踪组件。最好的方法是将组件绑定到一个作用域变量并读取该变量。尤其是使用复选框,这样可以为您节省很多麻烦

将UI元素视为可视化元素,而不是数据。业务逻辑始终作用于数据,而不是其可视化表示


试一试。

是的,第二条陈述是正确的。但我的问题是Editbox UI组件。当我们切换其可见性时,它的行为会有所不同。请您再澄清一点。“可见性”的问题是,实际上组件是否“呈现”,而不是它是否可见。因此,当它utes visibility/呈现为false,该元素不可用,而不仅仅是隐藏。它是一个标签不好的属性,在源代码中比在“设计”选项卡上更明显。包含复选框的代码可能有助于进一步解决问题。Stephan完全正确:组件存在,用户可以与h、 数据源用于与代码交互。切勿使用
getComponent(“id”).setValue(“value”)
…而是使用
dataSource.setValue(“property”、“value”)
someScope.put(“property”、“value”)
。这映射到组件的值绑定是什么,例如,
。如果组件未绑定到数据,但您需要以编程方式更改其值,将其绑定到数据,并更新代码以与该数据通信……组件将自动拾取新值。是的,第二条语句是正确的。但问题在于我与Editbox UI组件一起使用。当我们切换其可见性时,其行为会有所不同。请您再澄清一点。“可见性”的问题在于,实际上组件是否“呈现”,而不是它是否可见。因此,当它计算可见性/呈现为false时,该元素不可用,而不仅仅是hidden。这是一个标签很差的属性,在源代码中比在“设计”选项卡上更为明显。在复选框中包含代码可能有助于进一步解决问题。Stephan是绝对正确的:存在供用户交互的组件,数据源供代码交互。永远不要使用
getComponent(“id”).setValue(“value”)
…请改用
dataSource.setValue(“property”、“value”)
someScope.put(“property”、“value”)
。这映射到组件的任何值绑定,例如
。如果组件未绑定到数据,但您需要以编程方式更改其值,将其绑定到数据,并更新代码以与该数据对话……组件将自动拾取新值。