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

时间:2014-10-06 06:38:53

标签: xpages

我正在尝试从重复控件上的字段为字段(不在重复控件内)设置值。

重复的字段:

<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”。

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

但未分配任何值。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

组件只是后面数据模型的可视化。始终绑定您的控件并追踪模型值,而不是组件。禁用的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)

同样有三个重要方面:

  1. 永远不要追求UI元素,总是更新背后的绑定模型(又名:与数据对话,而不是UI 也称为:控制器更新模型,而不是视图)
  2. 确保您的目标是刷新字段的一部分
  3. 已禁用的字段不会触发事件
  4. 让我们知道它是怎么回事