xpages将重复字段中的值设置为字段

xpages将重复字段中的值设置为字段,xpages,Xpages,我试图从repeat控件上的字段为字段(不在repeat控件内)设置一个值 “重复”对话框中的字段: <xp:inputText id="inputText2" disabled="true"> <xp:this.value><![CDATA[#{viewScope.field_2[index]}]]></xp:this.value> <xp:eventHandler event="onchange" subm

我试图从repeat控件上的字段为字段(不在repeat控件内)设置一个值

“重复”对话框中的字段:

<xp:inputText id="inputText2" disabled="true">
        <xp:this.value><![CDATA[#{viewScope.field_2[index]}]]></xp:this.value>
        <xp:eventHandler event="onchange" submit="true"
                    refreshMode="partial" refreshId="sus">
                    <xp:this.action><![CDATA[#{javascript:getComponent("inputText4").setValue("1234");}]]></xp:this.action>
        </xp:eventHandler>
</xp:inputText>

正如您所注意到的,目标字段位于面板内,id=“sus”

目标字段也绑定到表单字段


但是没有赋值。如何实现这一点?

组件只是数据模型背后的可视化。始终绑定控件并跟随模型值,而不是组件。禁用的inputText无法激发值,在上面的代码段中,您有
disabled=“true”
。无法触发onchange事件

这将有助于:

<xp:inputText id="inputText2" disabled="false">
    <xp:this.value><![CDATA[#{viewScope.field_2[index]}]]></xp:this.value>
    <xp:eventHandler event="onchange" submit="true"
                refreshMode="partial" refreshId="sus">
                <xp:this.action><![CDATA[#{javascript:viewScope.someValue=42;}]]></xp:this.action>
    </xp:eventHandler>
</xp:inputText>

您的目标控件将如下所示:

<xp:inputText id="inputText4" value="#{viewScope.someValue}">
</xp:inputText>

如果您的目标控件绑定到其他对象(例如,
{document1.test}
),则需要更新该对象。(
document1.replaceItemValue(“test”,42)

再次强调三个重要方面:

  • 永远不要跟踪UI元素,始终更新后面的绑定模型(也称为:与数据对话,而不是与UI对话,也称为:控制器更新模型,而不是视图)
  • 确保您的目标是刷新字段的一部分
  • 禁用的字段不会触发事件

  • 让我们知道它是如何进行的

    您的SSJ是否被触发的?@PaulStephenWithers在同一事件中,我添加了另一行:getComponent(“inputText1”).setValue(“1234”)//其中inputText1是一个重复字段。已为该字段添加了值,但未为上述字段添加值(不在重复控制范围内)。重复控制范围内是否也有InputExt4控件?否。InputExt4不在重复控制范围内谢谢您的回答。1.我在一个字段的onChange事件中添加了问题代码,该字段没有被禁用,但仍然没有工作。2.将值添加到viewScope后,如何将其传递到已绑定到表单字段的相应字段(从repeat外部)。完整的代码将生成完整的答案。您没有提到目标字段已绑定到数据源。不会改变很多解决方案。与数据对话,而不是与用户界面对话!以上更新的解决方案感谢您的精彩提示和解释。祝您有个美好的一天。